在 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;
}
})
我有一个 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;
}
})