javascript - 具有最小值和最大值的 Angular 滤波器

标签 javascript angularjs angularjs-ng-repeat angularjs-filter

我在调整 Angular 以正确过滤结果时遇到一些问题。我正在尝试使用一个自定义过滤器,该过滤器从最小输入和最大输入获取参数。

/index.html

<input ng-model="minHorsepower">
<input ng-model="maxHorsepower">
...
tr(ng-repeat="plane in planes | filter:horsepowerFilter")

/controllers.js

//Horsepower filter
$scope.horsepowerFilter = function(plane) {
  var ret = true;

  if($scope.minHorsepower && $scope.minHorsepower > plane.horsepower) {
    ret = false;
  }

  if($scope.maxHorsepower && $scope.maxHorsepower < plane.horsepower) {
    ret = false;
  }

  return ret;
};

$scope.planes = [
  {
      'make' : 'Piper',
      'model' : 'Arrow',
      'modelNumber' : 'PA-28R-180',
      'horsepower' : '180',
      'gear' : 'retractable',
  },
  {
      'make' : 'Piper',
      'model' : 'Arrow',
      'modelNumber' : 'PA-28R-200',
      'horsepower' : '200',
      'gear' : 'retractable',
  }
];

当我在controllers.js中设置$scope.minHorsepower/$scope.maxHorsepower时,它最初起作用,但只是最初,当我在 <input> 中添加其他内容时不起作用。 s。此外,它预填充输入并过滤结果。当我更改输入的值时,它无法正常工作。

我引用了这个 Stack Overflow 线程,但我在我们的代码中找不到任何实质性差异... AngularJS multiple filter with custom filter function

感谢您的帮助。

最佳答案

为确保模型值是数字而不是字符串,请将输入的类型更改为数字

<input type="number" ng-model="minHorsepower" />
<input type="number" ng-model="maxHorsepower" />

此外,请确保您的模型值是数字而不是字符串。

或者,您可以通过过滤器中的 parseFloat(...) 运行所有内容。

关于javascript - 具有最小值和最大值的 Angular 滤波器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21103207/

相关文章:

javascript - 将 ng-repeat 与指令一起使用会导致子指令不更新

javascript - 在某个事件发生后向 ng-repeat 中的元素添加一个类

javascript - ECMAScript 6 支持 node.js 及其不同的包,例如原生的express body_parser

javascript - CKEditor 4 的下拉工具栏按钮

Javascript ALT 单击链接打开替代链接

javascript - 从 Angular 动态添加的表单获取数据

javascript - Angularjs 中的动态表单名称属性 &lt;input type ="text"name ="{{ variable-name }}"/>

javascript - Jquery-ui 自动完成功能在 IE8 中无法正常工作

angularjs - 监听 $scope 上的多个事件

javascript - Angular : adding conditional attributes to HTML