如何在AngularJS中更新全局变量?

时间:2014-07-07 18:33:31

标签: angularjs

某些应用程序状态信息需要存储在Angular服务中,以便全局访问。

app.value('identity', {});

然后在登录后的第一个视图的控制器中。我进行GET api调用以从服务器端收集应用程序状态信息。在成功回调中,将数据传输到我的全局变量(服务)。

function successCallback(data) {
    identity.username = data.username;
    identity.email = data.email;
}

我假设identity将在整个应用程序中保存数据。但事实并非如此!在我的其他视图中,我将identity注入控制器

app.controller('anotherController', ['identity', anotherController];
function anotherController(identity){
    // access identity here.
    $scope.username=identity.username;
}

我第一次看到这个观点。 username正确显示在页面上。但刷新后,identity似乎再次为空!我们可以做些什么来使价值真正持久?

1 个答案:

答案 0 :(得分:2)

您将var身份指向一个角度无法了解的新对象,因此无法将该新值传递给另一个控制器。我将回调的响应分配给身份上的属性:

app.value('identity', { data: null });

...

funciton successCallback(data) {
  // here, not overwriting identity, but editing a property
  identity.data = data;
}

控制器:

app.controller('anotherController', ['identity', anotherController];
  function anotherController($scope, identity){

  // add the svc to the scope so you can access its properties later
  $scope.identity = identity;
}

html模板:

{{ identity.data | json }}