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)">