在Angular JS中存储键值对的最佳方法是什么

时间:2016-10-13 13:45:01

标签: angularjs angularjs-scope angularjs-service

我有一个角度应用程序,包含主页面和部分页面。部分页面显示在ui-view

<div class="" ui-view>

</div>

要存储全局变量,请使用$scope.$parent.variable_name。所以我在基本控制器中声明了变量:

$scope.$parent.my_array = [];

并尝试使用以下命令从部分页面控制器填充它:

 $scope.$parent.my_array.push({ 'KeyId': KeyVariableID, 'KeyValue': KeyValue });

但这似乎没有做任何事情。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

在做了一些研究后,我最终使用了以下服务:

.service('MyService', function() {
  // Create a reference to ourself
  var sv = this;

  // Initialise the data structure
  sv.data = { };

  // Function to set an item in the map
  sv.setItem = function(key, value) {
    sv.data[key] = value;
  }

  // Function to retrieve a value from the map
  sv.getItem = function(key) {
    if (sv.data[key] != undefined) {
      return sv.data[key];
    }
    return false;
  }
})

答案 1 :(得分:0)

$rootScope可以正常工作,但我发现跟踪设置的属性来源会有点麻烦。

相反,服务可用于保持状态。如果您的服务是某个状态(键值)对象的单一事实来源,则无需担心继承某些$ rootScope属性或父控制器属性。

依靠内置的$cacheFactory提供商,您的服务可能如下所示:

angular.factory('myCache', function myCacheFactory($cacheFactory) {
  return $cacheFactory('my-cache');
}

现在,您可以在任何控制器中加入myCache服务,并按$cacheFactory文档中所述使用它:https://docs.angularjs.org/api/ng/service/$cacheFactory