这是我的数据:
[
{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 :(得分: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.:)