如何将值从自定义指令传递到自定义过滤器

How to pass value from custom directive to custom filter?

本文关键字:自定义 过滤器 指令      更新时间:2023-09-26

我有一个列表,希望它通过我的自定义过滤器进行过滤。但它的价值,我想把自定义指令与它自己的范围。怎么做呢?身体:

<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示例

注:我想我已经找到了使用"作用域"的解决方案。美元的父"。但是是否有可能将值直接传递给"myfilter: here"?"

给你

<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"双向绑定有什么目的,但这是一个坏主意。