我有这样的指令
ng-repeat="place in tb_places | filter:{'id':inputID}"
输出一些对象数组看起来像这样
$scope.tb_places = [
{name: 'some1', id:1}
...
{name: 'some10', id:10}
{name: 'some11', id:11}
{name: 'some12', id:12}
...
]
当我更改inputID并将其设置为1时,结果数组将填充源数组的元素,其中'ids'为1和10,11,12 . 因此,'id'值的部分被检查为子串,而不是数字 . 我该怎样治愈它?
谢谢!
UPD我试图在过滤器表达式中添加“:true” - 它完全清除输出(结果数组),它适用于一个简单的字符串数组,但不适用于对象(“true”想要与模式对象完全匹配,这意味着及其所有属性)
解决了!!!
对不起伙计们,我的错! 'inputID'与'id'(string vs int)的类型不同,因此内置比较器(“:true”)返回false . 非常感谢!
抱歉,我不能为你投票答案 - 缺乏声誉......见到你!
3 回答
您需要根据角度filter添加
comparator
以满足您的要求 .您可以将代码更改为:
您需要提供自己的比较器或手动将查询的值转换为整数并使用
true
标志:控制器:
视图:
这是一个运行的例子:http://jsbin.com/kecihexeyu/1/edit?html,js,output
编写自己的比较器 .
HTML
使用Javascript
Plunker完整版 . http://plnkr.co/edit/3JEvThiemq8ro8cXCYBd?p=preview