我有一个角度应用程序,包含主页面和部分页面。部分页面显示在ui-view
<div class="" ui-view>
</div>
要存储全局变量,请使用$scope.$parent.variable_name
。所以我在基本控制器中声明了变量:
$scope.$parent.my_array = [];
并尝试使用以下命令从部分页面控制器填充它:
$scope.$parent.my_array.push({ 'KeyId': KeyVariableID, 'KeyValue': KeyValue });
但这似乎没有做任何事情。有人可以帮忙吗?
答案 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