我正在使用angularJS进行扩展,我遇到过滤器问题。
我在弹出页面有一个按钮,单击时,按钮的祖先节点被阻止,有关其祖先的信息将存储在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 :(得分:0)
你试过了吗?
<li class="deadline" ng-repeat="deadline in deadlines | hideDeadline | orderBy:'time' " ng-hide="hideDeadline">
filter
实际上是一个内置过滤器,它采用一个列表并将其修剪下来。您可以传递一些东西,但在您的情况下,您希望返回一个函数,将所有项目的true
返回到&#34;显示&#34;。
<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;
}
}