是ng-if如果没有评估,或者我不清楚ng-view

时间:2016-11-03 17:17:14

标签: angularjs angular-ng-if ng-view

直接进入代码,我将在问题中解释更多

我有这样的index.html文件:

<body class="horizontal-menu">
<!-- Preloader -->
<div id="preloader">
    <div id="status"><i class="fa fa-spinner fa-spin"></i></div>
</div>
<div ng-if="isLoading">
    <div id="status"><i class="fa fa-spinner fa-spin"></i></div>
</div>
<section>
        <div class="contentpanel">
            <!-- content goes here... -->
            <error-page ng-if="error"></error-page>
            <div ng-view ng-if="!isLoading && !error"></div>
        </div>
    </div><!-- mainpanel -->
</section>

</body>

我想为我的网页实施指标,您可以看到<div id="status"><i class="fa fa-spinner fa-spin"></i></div>以及ng-if="isLoading"行。

login组件中,我将这些代码行从login视图更改为register视图。

$scope.onRegister = function () {
    $rootScope.isLoading = true;
    $location.path(routes.REGISTER);
}

我想要的是将视图从login视图更改为register视图时,指示符(微调器)已启动。之后,在register component代码中,我有这些行来强制关闭微调器。

function registerController($scope, $rootScope, $location, $http) {
    $rootScope.isLoading = false;
}

但旋转器无休止地旋转。

我试着阅读$viewContentLoaded,并将这些代码放在我的应用程序(父应用程序)以及register控制器中。

$rootScope.$on('$viewContentLoaded', function (event) {
    $rootScope.isLoading = false;
})

它仍然无济于事。

非常感谢帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我认为这个答案可能会回答你的问题,解释ng-if如何运作:

https://stackoverflow.com/a/19177773/5018962

简而言之:

ngIf指令根据表达式删除或重新创建DOM树的一部分。如果分配给ngIf的表达式求值为false值,则从DOM中删除该元素,否则将元素的克隆重新插入DOM中。