簡體   English   中英

ng-repeat過濾器未更新

[英]ng-repeat with filter not updating

我正在構建一個離子應用程序。 我處於一種狀態,用戶可以看到他們的所有帖子。 每個帖子都有許多字段,其中一個是“活動”字段-布爾字段。

我通過以下方式呈現列表:

<ion-item ng-repeat="post in posts | filter:{active:true}" ng-click="goToPost(post.id)" 
          class="item item-thumbnail-left">
  <some fields here />
</ion-item>

然后,用戶可以選擇停用帖子。

<ion-option-button class="button-assertive" ng-click="deactivate(post.id, $index)">
  DEACTIVATE
</ion-option-button>

此選項向后端發出請求,並且在本地將帖子的活動字段設置為“ false”。 停用完成后,我無法獲得ng-repeat來重新過濾列表-因為當前帖子不應再出現在活動帖子列表中。

我嘗試了$ scope。$ apply(),並拋出了$ digest錯誤...我試圖添加ng-change和ng-model,但這也不起作用。 我也嘗試完全重新加載狀態,但是由於某種原因,我無法完成此任務。 誰能幫我? 提前致謝!

看小提琴

<div ng-app="app" ng-controller="demoController">
    <ion-item ng-repeat="post in data | filter:{activated:true}" ng-click="deativate(post.id)">
        {{post.col1}}  {{post.activated }} {{"click Me"}} </br>
</ion-item>
</div>


var app= angular.module("app",[]);
app.controller('demoController', ['$scope', 
  function($scope) {
    $scope.data = [
        {id:1,col1:"abc",activated:true},
        {id:2,col1:"abc1",activated:true},
        {id:3,col1:"abc2",activated:true},
        {id:4,col1:"abc3",activated:true},
        {id:5,col1:"abc4",activated:false},
        {id:6,col1:"abc5",activated:true},
            ];

      $scope.deativate = function(id){

        angular.forEach($scope.data,function(item){
            if(item.id === id){
                item.activated = false;
            }
        })
      }

}]);

對於您的代碼,您可以共享您的代碼段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM