且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

我应该如何处理控制器之间的函数调用?

更新时间:2022-12-29 09:32:05

您应该包含在当它改变了通知所有侦听器的一些服务的数据全部。 修改这是一个 jsBin 证明了这种方法。

You should have the data all contained in some service that notifies any listeners when it is changed. Edit Here is a jsBin demonstrating this method

观察者模式将有利于这一个:

The observer pattern would be good for this one:

app.factory('MapService', function() {
  var observerCallbacks = [];
  var markers = [];

  var publicMembers = {
    addMarker: addMarker,
    getMarkers: getMarkers,
    registerObserverCallback: registerObserverCallback
  }

  function addMarker (marker) {
     markers.push(marker);
     notifyObservers();
  };

  function getMarkers() {
     return markers;
  }

  function registerObserverCallback(callback){
    observerCallbacks.push(callback);
  };

  function notifyObservers(){
    angular.forEach(observerCallbacks, function(callback){
      callback();
    });
  };

  return publicMembers;
});

然后在你的控制器就可以可以注入该服务,注册成为观察员,并随时观察被通知(例如,在 addMarker ,您的回调将被执行

app.controller('MyController', function($scope, MapService) {
    MapService.registerObserverCallback(function() {
        $scope.markers = MapService.getMarkers();
    });
});