我已经定义了自己的自定义过滤器,以便在angular.js网络应用程序中搜索帖子:
app.filter('myfilter', function() {
return function(postList, term) {
var out = [];
if(!postList) return out;
if(!term) return postList;
var i;
for(i = 0; i < postList.length; i++){
if(postList[i].title.indexOf(term) >=0){
out.push(postList[i]);
}
if($scope.isContentFilterOn.checked){
if(postList[i].text.indexOf(term) >=0){
out.push(postList[i]);
}
}
}
}
return out;
}
});
当然上面的内容不起作用,因为我无法访问范围变量,只是传递$scope
也不行。我怎么能这样做 - 有简单快捷的方式吗?
答案 0 :(得分:0)
您可以将任意数量的范围成员直接传递给过滤器(用冒号分隔)......
myfilter:filterTerm:isContentFilterOn
更新过滤方法签名......
function(postList, term, isContentFilterOn) {
然后按照你的意愿使用它......
if (isContentFilterOn) {
哦,不要忘记你可能需要在范围内将isContentFilterOn定义为false以便开始,因此它可以立即用于过滤器......
$scope.isContentFilterOn = false;
在这里更新了Plunker以显示我的意思......