角度过滤属性或其他属性

时间:2016-05-19 15:55:55

标签: angularjs filter

我一直在尝试使用角度过滤器$filter('filter')以编程方式过滤数组。我想基于两个属性进行过滤,但我希望在属性和/或其他属性中搜索结果。

使用此阵列

 [{
    id:1,
    name:'User2',
    rut:'22.222.222-2',
    created_at:'2016-03-23T18:36:34.404Z',
    updated_at:'2016-03-23T18:36:34.404Z',
    role_id:1},

  {
    id:2,
    name:'User1',
    rut:'11.111.111-1',
    created_at:'2016-03-23T18:36:34.416Z',
    updated_at:'2016-03-23T18:36:34.416Z',
    role_id:3}
];

当我使用字符串“2016”进行搜索时,我得到整个数组,因为我的过滤器搜索所有属性,如果我搜索,我需要查找属性name或者rut

这是我的搜索功能:

vm.usersList = angular.copy(UsersResolve);

function search(_searchString){
   vm.usersList = $filter('filter')(UsersResolve, {$: _searchString})
                                  : UsersResolve;
 }

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效。您可以将其调整为$ filter。

function search(_searchString){
   vm.usersList = vm.usersList.filter( function(user) {
       return user.name.indexOf(_searchString) >-1 || user.rut.indexOf(_searchString) 
   }
 }

答案 1 :(得分:1)

  

$ filter('filter')(数组,表达式,比较器)

表达式参数可以是string output = "\r\nR‚servations d'URLÿ:\r\n--------------------\r\n\r\n URL r‚serv‚e : https://+:443/SomeWebSite/ \r\n Utilisateurÿ: AUTORITE NT\\SERVICE R\u0090SEAU\r\n \u0090couterÿ: Yes\r\n D‚l‚guerÿ: Yes\r\n SDDLÿ: D:(A;;GA;;;NS) \r\n\r\n\r\n"; output = output.Replace(Environment.NewLine, ""); //==> output2=="R‚servations d'URLÿ:----------- Regex testUrlOpened = new Regex(output, RegexOptions.Singleline); MessageBox.Show(testUrlOpened.IsMatch(@"URL").ToString()); // ==> False MessageBox.Show(testUrlOpened.IsMatch(@".+URL.+").ToString()); // ==> False MessageBox.Show(testUrlOpened.IsMatch(@"URL .+https:\/\/\+:443\/SomeWebSite\/.+Yes.+Yes.+SDDL.+").ToString()); // ==> False 。您可以使用它来过滤掉数组。

function(value, index, array) {}

请参阅此Plunker