【问题标题】:AngularJS $filter not working in DirectiveAngularJS $filter 在指令中不起作用
【发布时间】:2014-09-02 07:24:28
【问题描述】:

/你好。

.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:对象不是函数

  • 在阵列。 (/js/angular.js:15550:24)
  • 在比较器处 (/js/angular.js:15559:36)
  • 在 /js/angular.js:15566:34
  • 在 Array.sort(本机)
  • 在 /js/angular.js:15555:22
  • 在 Scope.scope.ngOrderb (/js/controller.js:371:43)
  • 在 /js/angular.js:10797:21
  • 在 /js/angular-touch.js:472:9
  • 在 Scope.$eval (/js/angular.js:12699:28)
  • 在 Scope.$apply (/js/angular.js:12797:23)

你能解释一下为什么吗?

更新:plunker

【问题讨论】:

  • 你能提供一个 ngTablefields 的例子吗?这将有助于回答您的问题。
  • [{"colname":"Дата изменения", "colvalue":"EdDateTime", "type":"date"}, {"colname":"Пользователь БД", "colvalue": "EdDBOperator", "type":"string"}, {"colname":"Оператор", "colvalue":"EdWSOperator", "type":"string"}, {"colname":"АРМ", "colvalue ":"EdApplicationTitle", "type":"string"}, {"colname":"Рабочая станция", "colvalue":"EdWorkstation", "type":"string"}, {"colname":"Состояние" , "colvalue":"FName", "type":"string"}]
  • 能否也包括ngTabledata 的示例?

标签: angularjs angularjs-directive angularjs-filter


【解决方案1】:

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

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

当您将该参数更改为 fields.colvalue 时,您在 plunkr 中的示例有效。

【讨论】:

  • 谢谢。我找到了另一种方法。 $filter('orderBy')(scope.ngTabledata, fld.fld,scope.OrderRev);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
相关资源
最近更新 更多