2014-10-15 5 views
1

У меня есть директива для объекта фильтра. Директива представляет фильтр как группу comboboxes. И у меня есть пара других директив, на которые должны влиять изменения в состоянии фильтра (например, список). Поэтому, когда я изменяю значение combobox в фильтре, он должен обновить свойство фильтра. Затем каким-то другим директивам следует сообщать, что фильтр был изменен и после этого обновлен. На данный момент у меня есть простой сервис для хранения состояния фильтра:AngularJS: сделать состояние обслуживания наблюдаемым

angular.module("services", []).factory("svcFilter", function(){ 
    var filter = {}; 

    return filter; 
}); 

Эта услуга вводится в директиве фильтра. Когда значение выпадающего списка в директиве фильтра изменили фильтр изменения состояния:

angular.module("filter-module", ["services"]) 
    .directive("filter", function(){ 
     return { 
      restrict: "E", 
      templateUrl: "path/to/filter/template.html", 
      controller: function($scope, svcFilter){ 
       ... 
       $scope.$watch("filterProp1", function(newValue){ 
        svcFilter["filterProp1"] = newValue;  
       }); 
      } 
     } 
    }); 

где filterProp1 связан со значением ComboBox.

Пока все хорошо. Я могу добавить эту службу в другие директивы, и они будут иметь доступ к состоянию фильтра, но никогда не будут уведомлены об изменениях. Как его решить? Как уведомить других об изменениях?

+0

см. Здесь http://jsfiddle.net/cxxLwbrm/ – sylwester

+0

@sss, я смущен о том, как это работает. Как изменение в svcFilter.filterProp1 вызывает изменение в '