2013-05-05 91 views
0

我正在對angularJS進行擴展,並且過濾器有問題。過濾器在angualrJS中不起作用

我在彈出頁面中有一個按鈕,點擊後,按鈕的祖先節點被阻塞,並且關於其祖先的信息將被存儲在localStoarge中,所以當再次從服務器獲取數據時,我會使用過濾器來過濾前一個信息。

這裏是我的代碼:

過濾器

app.filter('hideDeadline', function() 
{ 
    return function(deadline){ 
    if(0 > JSON.parse(localStorage['rmed_deadlines']).indexOf(deadline)){ 
     return deadline; 
    } 
    } 
}) 

在popup.html:

<li class="deadline" ng-repeat="deadline in deadlines | filter:hideDeadline | orderBy:'time' " ng-hide="hideDeadline"> 
    <div class="btn-group"> 
    <button class="btn" ng-click="removeDeadline(deadline)">complete</button> 
    <button class="btn" ng-click="removeDeadline(deadline)">ignore</button> 
    </div> 
    <hr/> 
</li> 

和東西在我的controller.js:

$scope.removeDeadline = function(deadline){ 
    var old_value = JSON.parse(localStorage.getItem('rmed_deadlines')); 
    old_value.push(deadline); 
    localStorage.setItem('rmed_deadlines', JSON.stringify(old_value)); 
    this.hideDeadline = true; 
} 

但它不起作用。當點擊時,節點可以被阻塞,並且信息將被存儲在localStorage中,但是當重新打開擴展時,完成的項目仍然在那裏,這是否意味着過濾器有問題?

+0

是什麼'節點可以是blocked'是什麼意思?建議您創建一個複製問題的演示 – charlietfl 2013-05-05 12:05:50

+0

Fiddles rock ..請創建一個。 – Nix 2014-04-08 14:25:04

回答

0

你試過:

<li class="deadline" ng-repeat="deadline in deadlines | hideDeadline | orderBy:'time' " ng-hide="hideDeadline"> 

filter實際上是一個內置的過濾器,需要一個列表,修剪下來的。你可以傳遞一些東西,但在你的情況下,你想返回一個函數返回true所有項目「顯示」。

<li class="deadline" ng-repeat="deadline in deadlines | deadlineFunc | orderBy:'time' " ng-hide="hideDeadline"> 

$scope.deadlineFunc = function(deadline){ 
    //return true to show item 
    if(0 > JSON.parse(localStorage['rmed_deadlines']).indexOf(deadline)){ 
     return deadline; 
    } 
}