在promise完成后在控制器之间传递数据

时间:2014-09-11 14:30:00

标签: angularjs

我知道您应该通过服务在控制器之间传递数据,但我不知道如何在这种情况下执行此操作。

假设您有一个具有方法的ControllerA:

ControllerA.executePromise()

当承诺完成后,我想提醒服务它已完成。

然后我想通过服务告知ControllerB,ControllerA的承诺已经完成。

我知道我可以在承诺完成之后调用一个方法来告诉服务它已经完成,但是我怎么能通过服务立即告诉控制器B承诺是否完成?

1 个答案:

答案 0 :(得分:0)

我建议您始终使用服务/工厂在控制器(以及指令)之间共享数据,并在两侧进行注入。

之后,只需使用您的承诺解析功能来更新服务价值。

app.factory('SharedService', function() {
  return {
    sharedObject: {
      value: '',
      value2: ''
    }
  };
});

app.controller('FirstCtrl', function($scope, SharedService) {
  $scope.model = SharedService.sharedObject;
});

app.directive('myDirective',['SharedService', function(SharedService){
  return{
    restrict: 'E',
    link: function(scope){
      scope.model = SharedService.sharedObject;
    },
    template: '<div><input type="text" ng-model="model.value"/></div>'
  }
}]);

这是一个显示如何完成的傻瓜: http://plnkr.co/edit/Q1VdKJP2tpvqqJL1LF6m