AngularJS ng-repeat:filter:$ variable在使用'true'进行严格比较时效果不佳

时间:2017-05-15 18:24:38

标签: angularjs json limit repeat

我收到了商店的JSON文件,其中包含id,name和其他数据。 我有一个名为List的视图,其他名为Detail。

在List中,我列出了所有带有ng-repeat的JSON。 在详细信息中,我有'相同'列表,但是ng-repeat我使用id的过滤器,如:

<div class="item" ng-repeat="item in spots | filter:{id: idSpot}">
{{item.id}} - {{item.name}}
...

但我遇到的问题是,当我过滤商家ID:3时,显示所有商家的数字为3(3,30,73,33,...)。

我还发现 true 元素强制要严格比较收到的值:

<div class="item" ng-repeat="item in spots | filter:{id: idSpot}:true">

完美,当我写“filter:{id:7}:true”时,等于七。

但是当我比较它时,它就不起作用了,{id:idSpot}

$ scope.idSpot在Controller上正确设置,我知道它有效,因为它之前显示了所有三个(3,33,73,39,...)。 我可以使用console.log($ scope.idSpot)并确认它收到一个整数。

但该变量不适用于'true'。

我怎么能擦亮那个?

谢谢!

2 个答案:

答案 0 :(得分:0)

好吧,因为我有很多时间思考,我找到了一个可以继续修补的补丁。

正如此代码:

<div class="item" ng-repeat="item in spots | filter:{id: idSpot}">
{{item.id}} - {{item.name}}
</div>

收到一位数字时,如3;它用3(13,31,33,34,...)打印所有的numbes,我将添加ng-if子句,取$ index == 0,这是返回的第一个最低结果。 #3。

<div ng-repeat="item in spots | filter:{id: idSpot}" ng-if="$index == 0">

但是没有更正过滤器。谢谢你的阅读。

答案 1 :(得分:0)

我有一个尤里卡时刻,并且出现在我的脑海里,为什么它向我失败了这个过滤,也许一些失去灵魂的人会找到这篇文章并有另外一个想法考虑。

当我有这个时:

[[1 2]
 [5 6]]

$ scope.idSpot是一个从列表中接收一个项目时初始化的变量,因此我将{id}从JSON对象发送到此变量。

但我所拥有的不是整数。 '3'是一个字符串,所以当我强制比较(id == 3)时它失败了,因为我正在将一个字符与一个数字进行比较。 这是我的错。

我立刻来测试它,我是对的。 再次感谢你!