1

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

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

高级细节:

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

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

4

1 回答 1

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不会重新初始化并保留获得的身份验证所提供的用户 ID。

您可能想分享您的代码。

于 2012-09-19T22:31:44.627 回答