我有一个列表,希望它按我的自定义过滤器进行过滤。但我想从自定义指令中放入它自己的范围。怎么做? 身体:
<body ng-controller="test">
<tr ng-repeat="item in list | myfilter: HowToPuttHereValue? >
这是我的自定义过滤器:
.filter('myfilter', function(){
return function(array, num){
return array.slice(num, num+1);
}
})
这是我的自定义指令:
.directive('mydirective', function() {
return {
restrict: "E",
template:"<input ng-model='counter'><button ng-click='getIt(counter)'>PRESS</button>",
scope:{
item: '='
},
link: function(scope, element, attr){
scope.getIt = function(counter){
console.log(counter);
}
}
}
})
请参阅示例: JsFiddle Example
P.S。我想我已经找到了使用“scope。$ parent”的解决方案。但是有可能直接将价值传递给“myfilter:here?”
答案 0 :(得分:1)
<div ng-app="hello">
<div ng-controller="forExampleController">
<ul>
<li ng-repeat="num in list | myfilter: howToPutHereFromDirective ">{{num}} </li>
</ul>
<mydirective item="list.length" filter-value="howToPutHereFromDirective"></mydirective>
</div>
</div>
function forExampleController($scope){
$scope.list = [1,2,3,4,5,6,7,8,9];
$scope.howToPutHereFromDirective = 3;
}
angular.module('hello', [])
.filter('myfilter', function(){
return function(array, num){
return array.slice(num, num+1);
}
})
.directive('mydirective', function() {
return {
restrict: "E",
template:"<input ng-model='counter'><button ng-click='getIt()'>PRESS</button>",
scope:{
item: '=',
filterValue: '='
},
link: function(scope, element, attr){
scope.getIt = function(){
scope.filterValue = parseInt(scope.counter);
}
}
}
});
在孤立范围内做scope.$parent
确实不太好,因为孤立范围的目标正好相反。
我不确定item="list.length"
双向绑定的目的是什么,但这是一个坏主意。