2014-11-04 45 views
0

這裏是我的數據:「包含」搜索對象數組的子元素

[ 
    {profile: {name: "Test123"}} 
] 

我有一個文本輸入,就像這樣:

<input ng-model="searchText"> 

我試圖做一個使用文本框輸入搜索profile.name

我試圖做一個自定義過濾器,像這樣:

$scope.searchFilter = function(value){ 
    return value.profile.name.indexOf($scope.searchText) != -1; 
}; 

然後過濾,像這樣:

<tr ng-repeat="profile in profiles | filter: searchFilter"></tr> 

似乎不幸的是,這工作正常的初始搜索,但進入時文本放入文本框中,過濾器不會被重新評估。

當我在搜索框中輸入文字時,如何強制Angular重新檢查過濾器,還是有更好的方法來做到這一點

回答

0

您不需要創建一個功能來搜索。只要改變你的HTML到這一點:

<input ng-model="searchText.profile.name" /> 
... 
<tr ng-repeat="data in profiles | filter: searchText">{{data.profile.name}}</tr> 

在你的控制器:

$scope.searchText = { profile: {name:""}}; //should be the same data struct with your search target. 
$scope.profiles = [ 
    {profile: {name: "Someone"}}, 
    {profile: {name: "Luky"}}, 
    {profile: {name: "John"}}, 
    {profile: {name: "Mary"}}, 
    {profile: {name: "Howard"}}, 
    {profile: {name: "Sheldon"}} 
] 

然後,它的工作原理。 Here is jsfiddle.:)

And here is filter document.