2015-09-10 2 views
1

Простой `Реализация фильтра angularjs' выглядит следующим образом:угловой фильтр | не фильтровать все свойства объекта

<!DOCTYPE html> 
<html ng-app="app"> 
<head> 
    <title>angularjs</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script> 
    <script src="js/app.js"></script> 
</head> 
<body> 
    <input type="text" name="query" value="" placeholder="query" ng-model="q"> 
    <ol ng-controller="ItemsController"> 
     <li ng-repeat="item in items | filter: q"> 
      {{item.name}} 
     </li> 
    </ol> 
</body> 
<script type="text/javascript"> 
    'use strict'; 
    (function() { 
     var app = angular.module('app', []); 

     app.value('items', [ 
     {name: 'Item 3', position: 3, color: 'red', price: 2.75}, 
     {name: 'Item 1', position: 1, color: 'red', price: 0.92}, 
     {name: 'Item 4', position: 4, color: 'blue', price: 3.09}, 
     {name: 'Item 2', position: 2, color: 'red', price: 1.95} 
     ]); 

     app.controller('ItemsController', function($scope, items) { 
     $scope.items = items; 
     }); 
    })(); 
</script> 
</html> 

Когда я ищу в поле ввода, он ищет все свойства объектов в items массиве, в том числе position & price хотя только свойство name повторяется. то есть Если я ищу 2, он возвращается с item 1, item 2 и item 3. Но мне нужен только пункт 2. Как заблокировать поиск только видимыми свойствами объекта?

ответ

3

Изменить фильтр, чтобы быть:

<li ng-repeat="item in items | filter: {name: q}"> 
    {{item.name}} 
</li> 

Вот plnkr