【问题标题】:Observing changes across controllers in angular以角度观察控制器之间的变化
【发布时间】:2014-10-21 15:19:05
【问题描述】:

我有一个带有两个控制器的角度应用程序。这是代码的简化版本:

var app = angular.module('walkerApp', ['firebase']);

app.controller('AuthenticationController', function($scope) {
    function login(user) {
      ...
    }
});

app.controller('StepsDataController', function($scope) {

});

StepsDataController 提供来自 Firebase 后端的数据。 AuthenticationController 处理用户管理。当当前用户更改(通过 AuthenticationController 的登录或注册方法)时,StepsDataController 应该重新绑定到特定于该用户的一组数据。

如何在 Angular 中做到这一点?显然,我需要某种观察者实现,但我不确定机制是什么。

【问题讨论】:

  • 虽然我不确定,但在我看来 StepsDataController 应该是一个服务,而不是一个应用控制器——它是一个控制器有什么原因吗?
  • 你可以使用事件或者你可以实现一个pub/sub as in this example。
  • 我简化了服务,它需要根据当前登录的用户知道要查看数据配置单元的哪一部分。
  • 当一个用户通过Authentication控制器改变时,需要刷新另一个控制器吗?实际上,您有一个服务,StepsDataController 使用它来获取当前用户信息,并且两个控制器同时在同一页面上?

标签: javascript angularjs firebase observer-pattern


【解决方案1】:

您始终可以在主题控制器上使用$scope.$broadcast 或$scope.$emit,在观察者控制器上使用$scope.$on。请参阅docs 了解更多信息。

我不确定您的控制器范围是如何与层次结构相关的,但您始终可以使用 $rootScope.$broadcast。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2019-04-15
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多