AngularJS - 跨控制器广播

时间:2012-09-19 09:13:03

标签: javascript html angularjs

尝试登录的方案,并且在成功时,想要存储该LoginID并将其传递给所有其他控制器以进行导航/用户管理。类似于全局变量设置,存储一次使用到处概念。

一直在使用angularjs共享服务技术,但它没有在其他控制器中选择braodcaster LoginID。

高级详情:

1)登录HTML调用登录控制器从我回调终端服务器进行用户身份验证 2)成功时,通过共享服务广播LoginID 3)从登录HTML,页面导航到OrderMenu Html并调用OrderMenu控制器,在那里尝试获取通过共享服务广播的用户ID。 4)但是在Order Menu控制器中,显示的UserID是初始化值,即看起来再次调用app.factory并初始化Broadcasted值。

我想停止重新加载app.factory。看起来在这里缺少一些东西。任何想法在这里都会有所帮助。

1 个答案:

答案 0 :(得分:1)

以下是您所描述内容的快速实施示例。 它似乎正在发挥作用。

http://plnkr.co/edit/SPAB4W

我的服务定义如下:

app.factory('UserAuth', function() {
  return {
    userId: 'unknown',
    authenticate: function( name ) {
      // do server side authentication here...
      this.userId = 'authenticatedUserId_Of_' + name;
    }
  };
});

在此示例中,当第二个控制器(OrderCtrl)被调用时, UserAuth.userId未重新初始化 并保持获得的userId的身份验证。

您可能想要分享您的代码。