javascript - AngularJS 通过内联表达式过滤

标签 javascript angularjs expression angularjs-filter

我正在尝试添加一个内联 Angular 过滤器,该过滤器通过计算结果为 true 或 false 的表达式进行过滤。这是我的 JS:

angular.module('programApp', [
    'programApp.controllers',
]);
angular.module('programApp.controllers', [])
    .controller('programController', ['$scope', '$filter',  
    function($scope, $filter){

      $scope.advancedFilters = 1;

      $scope.bars = [
        {'name':'First',
          'id':1},
        {'name':'Second',
          'id':2},
        {'name':'Third',
          'id':3},
        {'name':'Fourth',
          'id':4},
        {'name':'Fifth',
          'id':5}];
    }]);

这是我的 HTML:

<div ng-app="programApp" ng-controller="programController">
  <label>Level: 
    <select ng-model="advancedFilters">
      <option>1</option>
      <option>2</option>
      <option>3</option>
      <option>4</option>
      <option>5</option>
    </select>
  </label>

  <div ng-repeat="bar in bars | filter:advancedFilters <= bar.id">
    <h3>{{bar.name}}</h3>
  </div>
</div>

您可以看到我如何尝试根据 advanceFilters 下拉列表中的内容来过滤 ng-repeat 栏。然而,当我尝试添加一个计算结果为 true 或 false 的过滤器到 ng-repeat 时,我会抛出一个 Angular 错误。

我想避免在这种情况下创建自定义函数。如果可能,过滤器应保持在 HTML 中内联。

这看起来很简单,但行不通。我在这里做错了什么?

这是一个代码笔:http://codepen.io/trueScript/pen/LVZKEo

最佳答案

如果您确实想避免使用 Controller ,您可以使用 ngInit 指令来创建 comparator表达式,它将在每次迭代时重新初始化。像这样的事情:

<div ng-init="test = bar.id >= advancedFilters" 
     ng-repeat="bar in bars | filter:{id:advancedFilters}:test">
    <h3>{{bar.name}}</h3>
</div>

演示: http://codepen.io/anon/pen/eNBeqb

关于javascript - AngularJS 通过内联表达式过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463968/

相关文章:

regex - 正则表达式匹配 *abc* 但不匹配 *bc*abc*bc*

delphi - 为什么 bool 表达式(有副作用)不足以作为语句?

javascript - 与 float 和视口(viewport)百分比单位的奇怪交互

javascript - png 文件上的颜色蒙版

javascript - AngularJS $anchorScroll yOffset 在子元素中

javascript - Route.delete() 需要一个回调函数,但得到一个 [object Undefined]

javascript - 在javascript中,: (function() {"use strict"}) (); and "use strict"?有什么区别

javascript - 如何使用 javascript 更改 iframe 内的所有链接

javascript - Angular新手,无响应动态表

c# - 为什么 F# 表达式树的生成比 C# 慢得多,它可以更快吗?