【问题标题】:angular js filters working but with errors角度js过滤器工作但有错误
【发布时间】:2018-03-16 21:52:55
【问题描述】:

Angular js 过滤器工作正常但抛出迭代错误

var app = angular.module('NGapp', []);
app.filter('altDate', altDate);
app.controller('MainCtrl', MainCtrl)

function MainCtrl($scope) {
  $scope.data = {
    'listProductCost': [{
      'data': 1
    }, {
      'data': 23
    }, {
      'data': 234
    }, ]
  }
}

function altDate(_) {
  return function(value) {
    console.log(value)
    if (!value || value.length === 0) {

      return [];
    } else {
      var f = []
      angular.forEach(value, function(data) {
        f.push(data['data']);
      })
      var s = []
      s.push({
        'min': _.min(f),
        'max': _.max(f)
      })
      return s;
    }

    //return s;
  };
}
app.factory('_', LodashFactory);

/** @ngInject */
function LodashFactory($window) {
  return $window._;
}
<!DOCTYPE html>
<html ng-app="NGapp">

<head>
  <meta charset="utf-8" />
  <title>AngularJS </title>

  <link rel="stylesheet" href="style.css" />
  <script data-require="lodash.js@4.17.4" data-semver="4.17.4" src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>
  <script data-require="angular.js@1.5.x" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js" data-semver="1.5.11"></script>

  <script src="app.js"></script>
</head>

<body ng-controller="MainCtrl">
  <p>Hello {{name}}!</p>
  <md-card-content layout="row" layout-align="none" ng-repeat="datas in data.listProductCost  |  altDate ">
    <div class="dark" flex="30">HO Cost</div>
    <div>
      <span>{{datas.min}}</span> % to <span>{{datas.max}}</span> %
    </div>
  </md-card-content>
</body>

</html>

这是我使用 angularjs 过滤器的工作代码。过滤器工作正常,但我在控制台中遇到迭代错误 过滤器的目的是只打印折扣的最小值和最大值。任何人都可以解决这个问题或给我一个想法来解决这个问题提前谢谢

【问题讨论】:

  • _ 的名字是什么意思?
  • 在angularjs中使用下划线
  • 好的,但那是什么意思?让它尽可能地不那么容易理解?
  • 为什么要从过滤器返回另一个函数?
  • 将值传递给过滤器

标签: javascript angularjs filter


【解决方案1】:

我看到你在使用 lodash。为什么不使用 _.minBy() 而不是 _.min() ?

这样你可以将你的 altDate 函数减少到

altDate(_){
  return function(value) {
    return {
       min:  _.minBy(value, function(i) { return i.data }),
       max:  _.maxBy(value, function(i) { return i.data})
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多