我偶然发现了以下问题 我用ng-repeat创建了一些按钮,我希望它们在点击其中一个时过滤我的列表。问题是该列表不会过滤 按钮:
<div ng-repeat="i in links">
<a href="" ng-click=" search = i.title " > {{i.title }} </a>
</div>
<div ng-repeat="i in links | filter: search">
<p>{{i.names}}</p>
</div>
但如果我这样做,列表就会被正确过滤
<a ng-click="search = 'music' ">Click</a>
答案 0 :(得分:1)
这是因为Javascript的继承怪癖。基本上将基元包装在一个对象中(在下面的插件中,custom
obj)。 Ng-repeat为每次迭代创建自己的范围..因此为每个范围创建search
,而不是在迭代之间共享。
看看这个plnkr:
http://plnkr.co/edit/GdTbpR1EBC1tPO8Fnq6c?p=preview
<a href="" ng-click="custom.search=i.name;">
<div ng-repeat="i in links | filter: custom.search">
并仔细阅读这篇文章,以便更好地了解角度范围。
https://github.com/angular/angular.js/wiki/Understanding-Scopes
答案 1 :(得分:0)
您可以定义一个函数,而不是使用标记来修改脚本:
$scope.filterLinks = function(title){
$scope.search = title;
};
然后绑定它:
<div ng-repeat="i in links">
<a href="" ng-click="filterLinks(i.title)" > {{i.title }} </a>
</div>