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

What is the best way to store key value pairs in Angular JS

我有一个 angular 应用程序,它由一个主页和部分页面组成。部分页面显示在 ui-view

<div class="" ui-view>

</div>

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

$scope.$parent.my_array = [];

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

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

但这似乎没有任何作用。有人可以帮忙吗?

$rootScope 可以工作,但我发现它在追踪其上设置的属性的来源时会有点混乱。

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

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

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

现在,您可以在任何控制器中包含 myCache 服务,并按照 $cacheFactory 文档中的说明使用它:https://docs.angularjs.org/api/ng/service/$cacheFactory

经过一些研究,我最终使用了以下服务:

.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;
  }
})