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

时间:2015-08-02 12:35:22

标签: javascript angularjs

我有一个列表,希望它按我的自定义过滤器进行过滤。但我想从自定义指令中放入它自己的范围。怎么做? 身体:

<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?”

1 个答案:

答案 0 :(得分:1)

Here it is

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