如何从angular.js中的指令中访问范围变量?

时间:2015-05-18 21:51:34

标签: javascript angularjs filter scope

我已经定义了自己的自定义过滤器,以便在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也不行。我怎么能这样做 - 有简单快捷的方式吗?

修改:来源http://plnkr.co/edit/G9BFBTaKdUmki8MJegrn?p=catalogue

1 个答案:

答案 0 :(得分:0)

您可以将任意数量的范围成员直接传递给过滤器(用冒号分隔)......

myfilter:filterTerm:isContentFilterOn

更新过滤方法签名......

function(postList, term, isContentFilterOn) {

然后按照你的意愿使用它......

 if (isContentFilterOn) { 

哦,不要忘记你可能需要在范围内将isContentFilterOn定义为false以便开始,因此它可以立即用于过滤器......

$scope.isContentFilterOn = false;

在这里更新了Plunker以显示我的意思......

http://plnkr.co/edit/vPTBws0JBpwvKY0ywCPC?p=preview