AngularJS$筛选器在指令中不起作用



/你好。

.directive('rnDatatable', function($filter) { //Таблица
return {
    scope : {
        ngTablefields : "=",
        ngTabledata : "="
    },
    restrict: 'AEC',
    link: function(scope, element, attrs) {
         scope.ngOrderb = function(fld) {
             scope.OrderRev=!scope.OrderRev
            scope.ngTabledata = $filter('orderBy')(scope.ngTabledata, fld,scope.OrderRev);
        }
    },          
    template: 
            '<table class="table table-striped">'+
            '<tr>'+
            '<td  ng-repeat="fields in  ngTablefields">'+
            '<span class="text-primary pointer" ng-click="ngOrderb({fld:fields.colvalue})">   {{fields.colname}}   </span> </td>'+
            '</tr>'+
            '<tr ng-repeat="row in ngTabledata"  class="animate-if">'+
            '<td ng-repeat="fields in ngTablefields">'+
            '<span class="text-default "> {{row[fields.colvalue]}}</span>'+
            '</td>'+
            '</tr>'+
            '</table>'  

};

});

我在$filter('orderBy') 上有一个错误

TypeError:对象不是函数

  • 在Array。(/js/angular.js:15550:24)
  • 在比较器处(/js/angular.js:115559:36)
  • 在/js/angular.js:15566:34
  • 在Array.sort(本机)
  • 在/js/angular.js:15555:22
  • 位于Scope.Scope.ngOrderb(/js/controller.js:371:43)
  • 在/js/angular.js:100797:21
  • 在/js/angular touch.js:472:9
  • 范围内$eval(/js/angular.js:12699:28)
  • 范围内$应用(/js/angular.js:12797:23)

你能解释一下为什么吗?

更新:plunker

问题在于模板中的ng-click指令。解决方案很简单:

<span class="text-primary pointer" ng-click="ngOrderb(fields.colvalue)">

当您将该参数更改为fields.colvalue时,plunkr中的示例就可以工作。

最新更新