我有一个数据设置,看起来像这个
$scope.friends = [
{
name: function() {
return 'steve';
},
number: function() {
return 555;
}
},
{
name: function() {
return 'mary';
},
number: function() {
return 555;
}
},
{
name: function() {
return 'jo';
},
number: function() {
return 888;
}
}
]
现在我想要的是根据文本输入过滤ng-repeat
上的数据。为了实现这一点,我试过这样做:
<table id="searchTextResults">
<tr><th>Name</th><th>Phone</th></tr>
<tr ng-repeat="friend in friends | filter:search">
<td>{{friend.name}}</td>
<td>{{friend.number}}</td>
</tr>
</table>
其中输入的定义类似于<input type="text" ng-model="search.name"/>
。但是过滤器不起作用。我试着来看看我是否修改了像这个这样的数据结构
$scope.friends = [
{
name:'steve',
number: 555
},
{
name:'marry',
number: 555
},
{
name:'steve',
number: 888
}
]
那么只有这一点有效。然而,我想保持我的数据结构原样。
有人能帮助我如何过滤具有上述数据结构的数据吗。
plnkr示例
您可以修改friends
数据以满足此要求。我所做的是使用angular.forEach()
函数来修改数据,并将其放入一个名为$scope.modifiedFriends
的新数组中。
$scope.modifiedFriends = [];
angular.forEach($scope.friends, function(friend) {
$scope.modifiedFriends.push({
name: friend.name(),
number: friend.number()
});
});
代替friends
的ng重复,而是modifiedFriends
的ng重复。
<tr ng-repeat="friend in modifiedFriends | filter:search">
<td>{{friend.name}}</td>
<td>{{friend.number}}</td>
</tr>
工作Plunker