【问题标题】:1 character filter in angular JSAngular JS 中的 1 个字符过滤器
【发布时间】:2017-06-16 07:34:00
【问题描述】:

在 Angular 中遇到过滤器问题。

按角度过滤,数据过滤在我输入两个字符时发生,如果我输入 1 个字符,则没有任何反应。

<input type="text" ng-model="filterAge">

<table>
  <tr ng-repeat="r in vm.Data | filter: filterAge">
    <td>{{r.Age}}</td>
  </tr>
</table>

如何使角度为 1 个字符进行过滤?

例如,如果我输入 1,它不会过滤,如果我输入 19,它会过滤...

【问题讨论】:

  • 你的 没有关闭,需要在 标签中...
  • 值得一提的是,如果你只想按年龄过滤物品,你应该这样做:&lt;tr ng-repeat="r in vm.Data | filter: { Age: filterAge }"&gt;
  • 实际上代码使用更少的更多属性进行过滤,我对其他字段也有同样的问题,1个字符,什么都没有,发生,超过1个,过滤发生,内部是否有任何长度限制?例如,在自动建议中,我们说 maxLength 进行搜索,例如:3,所以当用户输入 3 个字符时,搜索就会发生,类似地,想知道过滤器内部是否发生了任何长度检查?如果我需要创建自定义过滤器,谁能帮助我?
  • @Sharpeye500 AngularJs 内置过滤器没有限制。您可以创建一个 sn-p 或 plunker 来重现您的问题吗?

标签: javascript angularjs angularjs-filter


【解决方案1】:

您可能在 vm.Data 中没有任何单个数字值,或者您的所有值都包含“1” - 尝试使用 0-9 之间的所有数字进行输入。

我有你的过滤器在这里使用单个数字:

https://jsfiddle.net/AKMorris/7xn77eeh/

HTML:

<div data-ng-app='myApp' data-ng-controller='myCtrl'>

   <input type="text" ng-model="filterAge"/>

<table>
 <tr ng-repeat="r in vm.Data | filter: filterAge">
 <td>{{r.Age}}</td>
</tr>
</table>

</div>

Javascript:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
        $scope.vm = {};   
    $scope.vm.Data = [
    {"Age":19},
    {"Age":1},
    {"Age":2},
    {"Age":3},
    {"Age":22},
    {"Age":43}
    ];
});

【讨论】:

  • 谢谢,当值不存在时,它可能是 undefined 或 null 吗?
  • nope angular 将跳过那些尝试在此处的更新中输入“5”作为过滤器的操作:jsfiddle.net/AKMorris/7xn77eeh/2
【解决方案2】:
<tr ng-repeat="r in vm.Data | filter: filterAge>

您错过了 ng-repeat 末尾的右引号 (")

【讨论】:

    猜你喜欢
    • 2016-10-18
    • 2013-09-13
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2015-01-12
    • 2017-04-28
    相关资源
    最近更新 更多