2016-03-28 22 views
0

Bir dizi olacak Diziyi $scope.AuthorArray="sridhar" gibi tek bir değerle filtreleyebilirim. Fakat birden çok değerle $scope.AuthorArray="sridhar,Alan" filtreleyemiyorum.Arama filtrasyon Değer

Yardım edin, ben yeniyim :)

+0

Size filtrelemek çalıştığınız şeyi açık değil. Filtrelemek istediğiniz değerler dizisi nasıl görünür? Lütfen sorunuz için daha fazla kod/içerik sağlayın. – ryanyuyu

cevap

0

Aslında kullanılan diğer bir yöntem. Teşekkür :)

`

$scope.authorChange = function() { 
      var ppick = SPClientPeoplePicker.SPClientPeoplePickerDict.peoplePickerDiv_TopSpan; 
      var filteredArticlestemp = []; 
      $scope.authorarray= getUsers(ppick); 
      //$scope.authorarray = $scope.authorarray.join(); 
      for (var j = 0; j < $scope.authorarray.length; j++) { 
       for (var i = 0; i < $scope.filteredArticles.length; i++) { 
        if ($scope.filteredArticles[i].Author == $scope.authorarray[j]) { 
         filteredArticlestemp.push($scope.filteredArticles[i]); 
        } 
       } 
      } 
      $scope.filteredArticles = filteredArticlestemp; 
     } 
     function getUsers(peoplePicker) { 

      // Get information about all users. 
      var users = peoplePicker.GetAllUserInfo(); 
      var userInfo = []; 
      if (users.length > 0) { 
       for (var i = 0; i < users.length; i++) { 
        var user = users[i]; 
        userInfo.push(user.DisplayText); 

       } 
      } 


      return userInfo; 
     } 

`

`<div id="peoplePickerDiv" ng-model="authorsearch"></div> 
<input type="button" value="Refine" ng-click="authorChange()" />` 
1

açıkça sorunuzu almıyorum ama bildiğim kadarıyla anladığı şekliyle, sana özel bir filtre yazmaktır gerekenleri düşünüyorum. Bu örnekte

, matchMyCriteria AuthorArray dizideki mevcut adlardan liste ile dizideki tüm öğeleri eşleşir.

HTML:

<div ng-repeat="item in items | filter: matchMyCriteria()"> 
{{ item }} 
</div> 

JS: Orada bunun için başka bir çözüm olduğunu ve varsayalım

$scope.items = [{title: "abc", author: "Alan", .....}, ......]; 
$scope.AuthorArray = ["sridhar", "Alan"]; 
$scope.matchMyCriteria = function() { 
    return function(item) { 
    return ($scope.AuthorArray.indexOf(item.author) > -1); 
    }; 
}; 

iyi biri olmak.

Bu örnekte, öğe dizisini bir dizi yazar temelinde filtrelemek için myFilter kullanılır.

HTML:

<div ng-repeat="item in items | myFilter: AuthorArray"> 
    {{item}} 
</div> 

JS: Filtreyi tetiklemek için bir düğme kullanılan ng-repeat üzerinde filtre kullanılarak yerine know.But

app.filter('myFilter', function() { 
    return function(list, criteria) { 
    return list.filter(function(l) { 
     return (criteria.indexOf(l.author) > -1); 
    }); 
    }; 
});