Angularjs 仅在页面视图中完成数据加载后隐藏页面加载程序

Angularjs 仅在页面视图中完成数据加载后隐藏页面加载程序,angularjs,Angularjs,目前我与angularjs合作。 现在我有了一个ng click函数,当选中或取消选中复选框时调用它。我有一个完整的页面加载器,当我点击复选框时,它会显示出来。只有在加载完整视图后,它才会被隐藏。我尝试了这个代码,但它不起作用 点击这里 <input type="checkbox"id="myId" ng-click="sampleClick(1)"> 我只想在视图部分完全加载时设置$rootScope.setVariable=1。(每次单击复选框时) 注意:当我在页面加载时使用$

目前我与angularjs合作。 现在我有了一个ng click函数,当选中或取消选中复选框时调用它。我有一个完整的页面加载器,当我点击复选框时,它会显示出来。只有在加载完整视图后,它才会被隐藏。我尝试了这个代码,但它不起作用

点击这里

<input type="checkbox"id="myId" ng-click="sampleClick(1)">
我只想在视图部分完全加载时设置$rootScope.setVariable=1。(每次单击复选框时)

注意:当我在页面加载时使用$viewContentLoaded时,它可以正常工作。但是,当我在使用ng click功能时,没有得到任何响应。

You can set one flag you can set it value true/false.

for example(I am taking your example so you can understand it batter):- 

$scope.loading = false;
$scope.sampleClick = function(type) {

        var param       = new Object();
        param.type      = type;

        //side bar listing
        Data.post('url/testurl', param).then(function(data){
            $scope.all          = '';
            $scope.all          = angular.fromJson(data);

            console.log("Contents is trying to load.");
              $scope.loading = true;
            $scope.$on('$viewContentLoaded',function(event, viewConfig){
              $scope.loading = false;
                console.log("Contents did load.");
                $rootScope.setVariable = 1;
            });

        }, function (error) {
            $rootScope.setVariable = 1;         
        });

    }
这里我有一个$scope.loading变量,默认值为false,当您单击复选框时,它将被设置为true,这样您就可以显示加载程序,当它获得数据时,它将被设置为false,这样它将停止加载


我希望您能理解。

如果视图是使用ng repeat渲染的,为什么不能使用ng repeat指令来处理渲染结束,然后启动函数调用呢

比如说

<div ng-repeat="i in things" repeat-done>
// here you use i to render your filter with checkbox
</div>

实际上,$viewContentLoaded并不适用于每次单击。不是关于如何设置变量。$scope.$on(“$viewContentLoaded”,函数(事件,viewConfig){$scope.loading=false;console.log(“内容未加载”);$rootScope.setVariable=1;});这不适用于ng click。
<div ng-repeat="i in things" repeat-done>
// here you use i to render your filter with checkbox
</div>
app.directive('repeatDone', function($rootScope) {
  return function(scope, element, attrs) {
    if (scope.$last){
        //set your variables or do you job
    }
  };
})