代码之家  ›  专栏  ›  技术社区  ›  Summer Developer

角度Ng如果出现滞后

  •  1
  • Summer Developer  · 技术社区  · 10 年前

    我正在使用 ng-if 在元素上隐藏它,直到满足特定条件。然而,条件在我的控制器中得到了满足,但是当我的jquery选择器试图查找元素时,元素似乎仍然不在DOM中。它似乎滞后了,也许是我做错了什么。

    我的HTML:

    <div ng-if="!aBreadNotSelected" ng-click="goBack()" id="goBack"><i class="fa fa-arrow-left"></i> <span id="goBackText">Go <u>Back</u> To Menu</span></div>

    我的控制器:

    $scope.myFunc = function(){
    $scope.aBreadNotSelected = false;
    $("#goBack").css("left","0px");
    }
    

    myFunc 火灾,我知道这是因为我在这里排除的其他部分会被执行。但jquery找不到 $("#goBack") 尽管它在寻找 aBreadNotSelected 变为false,应满足 ng如果 ,那么你认为发生了什么?

    :(

    编辑:我知道jquery很好,因为当我键入 $("#goBack").css("left","0px"); 在控制台中 我的功能 火,我得到了我想要的。

    2 回复  |  直到 10 年前
        1
  •  2
  •   Kishor Sharma    10 年前

    根据 Doc :

    ngIf指令基于{表达式}删除或重新创建DOM树的一部分。如果分配给ngIf的表达式的计算结果为假值,则元素将从DOM中删除,否则元素的克隆将重新插入到DOM中。

    这意味着需要再次呈现html DOM。

    此外,由于HTML DOM不存在,jQuery绑定将无法按预期工作。您需要使用 .on(处理程序,函数) 以获得要触发的所需事件。

    您可以尝试使用 ng-show 相反

        2
  •  0
  •   Jayant Patil    10 年前

    您必须初始化变量,然后只有它才能按您的需要工作 请参见此处 http://jsfiddle.net/a8Loxpku/

    $scope.aBreadNotSelected = true;
    $scope.myFunc = function(){
    $scope.aBreadNotSelected = false;
    $("#goBack").css("left","0px");
    }
    

    希望这对你有所帮助