我可以在过滤整个对象时对我的选项使用过滤器,但我只希望过滤器应用于name属性,这是我无法工作的。无论输入中输入什么内容,下面的结果都不会改变选择中显示的内容。我的答案基于这里找到的答案 - Use filter on ng-options to change the value displayed
<input type="search" class="form-control" placeholder="Filter user groups" results="0" ng-model="searchText" />
<select class="form-control"
size="8"
multiple
ng-model="UserGroupsSelected"
ng-options="userGroup.Id as (userGroup.Name | filter:searchText) for userGroup in AvailableUserGroups" >
但是,如果我有 -
,过滤器确实有效ng-options="userGroup.Id as userGroup.Name for userGroup in AvailableUserGroups | filter:searchText"
问题在于我不想按整个对象进行过滤,否则就会出现看似随机且不需要的结果。
答案 0 :(得分:5)
您可以将过滤器指定为参数名称等于搜索字段的对象。
为了您的目的,尝试将searchText.Name
作为搜索文本的模型。它应该只通过&#34; Name&#34;。
<input type="search" class="form-control" placeholder="Filter user groups" results="0" ng-model="searchText.Name" />
<select class="form-control"
size="8"
multiple
ng-model="UserGroupsSelected"
ng-options="userGroup.Id as userGroup.Name for userGroup in AvailableUserGroups | filter:searchText">
答案 1 :(得分:0)
您可以通过以下方式创建自己的过滤器:
AvailableUserGroups|byNameInSearchText:searchText
声明:
myapp.filter('byNameInSearchText', function() {
return function(availableUserGroups,textName) {
if (typeof textName !== "undefined" && textName !== null) {
return availableUserGroups.filter(function(u) {
return (u.Name != null) && u.Name.indexOf(textName) !== -1;
});
}
else return availableUserGroups;
};
});