Фильтрация на стороне клиента.
Если вы не ищете ничего сверхъестественного, этого можно добиться очень простым способом глобального поиска. Я даже не знал, сработает ли это, поэтому я просто провел быстрый тест, и он работает. Очевидно, что это можно было бы решить гораздо более детально и контролируемо, используя сервисы и внедряя их туда, где они нужны. Но поскольку я точно не знаю, что вы ищете, я предоставлю это решение, если вам оно нравится, примите его. Если вы этого не сделаете, я, вероятно, мог бы помочь вам с сервисным инъекционным решением.
Быстрое решение состоит в том, чтобы иметь контроллер для всего приложения с $rootScope ng-model. Назовем его global.search.
$rootScope.global = {
search: ''
};
Для ввода широкого поиска приложения.
<form>
<label>Search</label>
<input ng-model="global.search" type="text" class="form-control" />
</form>
В отдельных частях вам просто нужно отфильтровать данные на основе ng-модели global.search. Два примера
<p ng-repeat="post in posts | filter: global.search">{{ post.name }}</p>
Второй шаблон с другой областью действия
<p ng-repeat="video in videos | filter: global.search">{{ video.name }}</p>
Обратите внимание, как они оба реализуют | фильтр: глобальный.поиск. Всякий раз, когда global.search изменяется, любые фильтры в текущем представлении будут изменены. Таким образом, сообщения будут фильтроваться при просмотре сообщений, а видео — при просмотре видео. Все еще используя ту же модель global.search ng.
Я проверил это, это работает. Если вам нужны более подробные сведения об установке и иерархии дочерних контроллеров, дайте мне знать. Вот краткий обзор полного шаблона
<html>
<body ng-controller="AppController">
<form>
<label>Search</label>
<input ng-model="global.search" type="text" class="form-control" />
</form>
<div ui-view="posts">
<div ng-controller="PostController">
<p ng-repeat="post in posts | filter: global.search">{{ post.name }}</p>
</div>
</div>
<div ui-view="videos">
<div ng-controller="VideoController">
<p ng-repeat="video in videos | filter: global.search">{{ video.name }}</p>
</div>
</div>
</body>
</html>
23.09.2013