2017-07-21 50 views
1

當前我正在使用angularjs。 現在我有一個ng-click函數,它在複選框被選中或未選中時被調用。我有一個完整的頁面加載器,當我點擊複選框時,它會顯示。只有在加載完整視圖後纔會隱藏。我嘗試此代碼,它不工作僅在完成頁面視圖中的數據加載之後才隱藏頁面加載器

來這裏的點擊

<input type="checkbox"id="myId" ng-click="sampleClick(1)"> 

這裏是js代碼

$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.$on('$viewContentLoaded',function(event, viewConfig){ 
       console.log("Contents did load."); 
       $rootScope.setVariable = 1; 
      }); 

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

    } 

我想設置$ rootScope.setVariable = 1,只有當鑑於部分被完全加載(當我點擊複選框每次)

注:當我使用$在頁面加載的時間viewContentLoaded,它的工作原理沒有任何問題。但是當我和ng-click函數一起使用時,我沒有得到任何迴應。

回答

1

如果使用ng-repeat渲染視圖,爲什麼不能使用ng-repeat指令來處理渲染的結束,然後啓動函數調用。

例如

<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 
    } 
    }; 
}) 
0
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變量,它的默認值是假的,當你點擊複選框,然後它將被設置爲true,所以當時可以顯示加載器,當它獲得數據它將被設置爲false,因此它將停止加載。

我希望你能理解。

+0

實際上$ viewContentLoaded不是每次單擊工作。關於如何設置變量$ scope。$ on('$ viewContentLoaded',function(event,viewConfig){scope = 0; console.log(「Contents did load。」); $ rootScope .setVariable = 1; });這不適用於ng-click。 – Science