【问题标题】:When Invoke Filter by js in angular its return null当 js 以角度调用过滤器时,它返回 null
【发布时间】:2015-05-18 08:42:14
【问题描述】:

我是 Angular 的新手,我尝试在 angularJS 中使用 JavaScript 过滤器,但我得到了 null..

app.controller('aneesFilters', function($filter){
    this.filterItem = filterItems;
    this.filterJSItem = $filter('currency')(filterItems, 'price');

});

var filterItems = [
    {price: 1254},
    {price: 154},
    {price: 963},
    {price: 1880},
];

html代码:

    <div ng-controller="aneesFilters as filter">
        <div ng-repeat="item in filter.filterItem">
            <div>{{item.price | currency}}</div>
            <div>{{item.price | currency:"JOD"}}</div>
            <div>{{item.price | currency:"JOD":0}}</div>
            <hr />
        </div>

        <h2>By javascript (Used filter in controller)</h2>
        <div ng-repeat="item in filter.filterJSItem">
            <div>{{item.price}}</div>
            <hr />
        </div>
    </div>

当我在 Expression 上使用过滤器时,代码工作正常,调用 FilterJsItem 时出现问题..

非常感谢。

【问题讨论】:

标签: angularjs


【解决方案1】:

我创建了一个 plunker here

基本上我已经创建了另一个过滤器,它使用货币过滤器并对数组进行修改并返回过滤后的数组。

// 代码在这里

var app = angular.module("app", []);

app.filter('currenyArray',  function($filter) {
  return function(input, format, prop) { 
    input = input || [];
    var out = angular.copy(input);

    for (var i = 0; i < input.length; i++) {
      var p = $filter('currency')(input[i][prop],format);

      out[i][prop] = p;
       console.log( input[i][prop])
    }
    return out; 
  };
})

app.controller('myCtrl', function($filter, $scope){

  $scope.filterItem = [
    {price: 1254},
    {price: 154},
    {price: 963},
    {price: 1880},
];    



$scope.filterJS2 = $filter('currenyArray')($scope.filterItem, 'USD', 'price');

});

【讨论】:

  • 谢谢你,它的工作但我做了一些改变,比如将 $scope.filterJS2 更改为 this.filterJS2 ..并在 html 中设置 ng-repeat 以重复项目 ...(Y)
【解决方案2】:
app.controller('aneesFilters', function($filter){
    this.filterItem = filterItems;
    this.filterJSItem = $filter('currency')(filterItems.price);

});

【讨论】:

  • 将控制器的第 3 行更改为 this.filterJSItem = $filter('currency')(filterItems.price);
猜你喜欢
  • 2013-08-24
  • 2013-12-15
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多