在角度页面之间保留值的最简单方法是什么?

时间:2014-07-16 22:02:57

标签: angularjs

我在页面 x 。我单击 x 页面上的操作,该操作使用新文本更新(使用ajax)3个div元素。

然后我导航到页面 y (带有角度请求),然后返回页面 x - 我用ajax更改的值现在已经消失(它们是默认值) )。

我的值不在表单内,而是在div元素内。

在角度切换页面之间保留值的最简单方法是什么?如果有些更改(例如使用ajax)?

2 个答案:

答案 0 :(得分:3)

您有几个选择

  1. 将您的数据保存到$rootScope
  2. 创建service来存储您的数据。
  3. 将您的数据保存到$cookieStore

答案 1 :(得分:3)

最简单的?在$ rootScope上设置值。

$rootScope.name = name;

现在只需在任何需要名称的控制器中注入$ rootScope。

angular.module('myModule').controller('CtrlA', function($rootScope) { 
  $rootScope.name = "something";
});

angular.module('myModule').controller('CtrlB', function($rootScope) { 
  console.log($rootScope.name);
});

如果您开始向rootScope添加大量值,那么最好使用service

与名称之类的简单服务相当的服务是:

angular.module('myModule').service('Name', function Name() {
  var name;

  var service = {       
   getName: function() { return name; },
   setName: function(n) { name = n; }
  };
  return service;
});

然后,您可以在不同的控制器中注入此服务。

angular.module('myModule').controller('CtrlC', function(Name) { 
  Name.setName('hello world!');
});

angular.module('myModule').controller('CtrlD', function(Name) { 
  $scope.name = Name.getName();
  console.log($scope.name);
});