说我有一个(非常简化的)控制器定义如下:
app.controller('myController', ['$scope', function(scope){
list=[1,2,3,4,5]
scope.filterFunction = function(item, upperBound){
if(item < upperBound){
return(item);
}
}
}]);
我如何通过模板传递upperBound的值?
<div ng-repeat="item in list | filter:filterFunction">{{item}}</div>
我知道如果您滚动专用过滤器,则可以使用filterName:arg1:arg2....
有没有办法用这种方法实现类似的行为?或者,有没有办法让控制器功能可以访问范围?
答案 0 :(得分:0)
如果您没有创建专用过滤器,则可以在范围上创建一个返回过滤项的函数。如:
app.controller('myController', ['$scope', function(scope) {
scope.list = [1,2,3,4,5];
scope.upperBound = 3;
scope.filterFunction = function(list, upperBound) {
var rval = [];
for(var i = 0, l = list.length; i < l; i++)
{
if(list[i] < upperBound)
{
rval.push(list[i])
}
}
return rval;
};
// or
scope.filteredList = function() {
var rval = [];
for(var i = 0, l = scope.list.length; i < l; i++)
{
if(scope.list[i] < scope.upperBound)
{
rval.push(scope.list[i])
}
}
return rval;
};
}]);
然后绑定到该函数:
<ul>
<li ng-repeat="item in filterFunction(list,upperBound)">
{{item}}
</li>
</ul>
或
<ul>
<li ng-repeat="item in filteredList()">
{{item}}
</li>
</ul>