2013-05-05 89 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; 
    } 
}