2017-07-21 4 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;   
     }); 

    } 

であるI = 1 $ rootScope.setVariableを設定したい場合にのみ、 (とチェックボックスをクリックするたびに)

注:ページ読み込み時に$ 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> 

とディレクティブ例えば

は実際に$ viewContentLoadedは、各クリックで動作していない

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;   
     }); 

    } 

私はあなたがチェックボックスをクリックしたときにローダーを表示することができ、その時点でので、それがデータを取得するとき、それがtrueに設定され、デフォルト値はfalseで変数をscope.loading $を取る持っていますfalseに設定されて読み込みが停止します。

ご理解いただきますようお願い申し上げます。

+0

次のようになります。 $ scope($ viewContentLoaded)、function(event、viewConfig){ $ scope.loading = false; console.log( "内容が読み込まれました"); $ rootScope .setVariable = 1; });これはng-clickでは機能しません。 – Science

関連する問題