AngularJS$过滤器在指令中不工作

AngularJS$过滤器在指令中不工作,angularjs,angularjs-directive,angularjs-filter,Angularjs,Angularjs Directive,Angularjs Filter,/你好 .directive('rnDatatable',函数($filter){// 返回{ 范围:{ ngTablefields:“=”, ngTabledata:“” }, 限制:“AEC”, 链接:函数(范围、元素、属性){ scope.ngOrderb=功能(fld){ scope.orderev=!scope.orderev scope.ngTabledata=$filter('orderBy')(scope.ngTabledata,fld,scope.OrderRev); } },

/你好

.directive('rnDatatable',函数($filter){//
返回{
范围:{
ngTablefields:“=”,
ngTabledata:“”
},
限制:“AEC”,
链接:函数(范围、元素、属性){
scope.ngOrderb=功能(fld){
scope.orderev=!scope.orderev
scope.ngTabledata=$filter('orderBy')(scope.ngTabledata,fld,scope.OrderRev);
}
},          
模板:
''+
''+
''+
“{fields.colname}}”+
''+
''+
''+
“{row[fields.colvalue]}”+
''+
''+
''  
};
}))

我在
$filter('orderBy')

TypeError:对象不是函数

  • 在阵列上。(/js/angular.js:15550:24)
  • 在比较器处(/js/angular.js:15559:36)
  • at/js/angular.js:15566:34
  • at Array.sort(本机)
  • at/js/angular.js:15555:22
  • 位于Scope.Scope.ngOrderb(/js/controller.js:371:43)
  • at/js/angular.js:10797:21
  • at/js/angular touch.js:472:9
  • 范围为$eval(/js/angular.js:12699:28)
  • 范围为$apply(/js/angular.js:12797:23)
你能解释一下为什么吗


更新:

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

.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>'  



};


当您将该参数更改为
fields时,您在plunkr中的示例就起作用了。colvalue

您可以为ngTablefields添加一个示例吗?这将有助于回答您的问题,“type”:“string”}、{“colname”:“Пааааааааааааааааааааааааааааааааа;
<span class="text-primary pointer" ng-click="ngOrderb(fields.colvalue)">