对于我当前正在从事的项目,我目前需要使用在一个控制器(例如controllerA
)和另一个控制器(例如controllerB
)中生成的数据(对象)。我正在使用factory
来执行此操作(甚至尝试过service
)。就像这样:
.controller('controllerA', ['$scope', '$rootscope', ....., 'PVFactory', function($scope, $rootscope, ....., PVFactory) {
$scope.PVObject = //generated here.
PVFactory.addPVObject($scope.PVObject);
}])
.controller('controllerB', ['$scope', '$rootscope', ....., 'PVFactory', function($scope, $rootscope, ....., PVFactory) {
$scope.new_PVObject = PVFactory.getPVObject(); //need to use the Object from controllerA here.
}])
.factory("PVFactory", function($rootScope) {
var PVObject = [];
var addPVObject = function(newObj) {
if (!PVObject.includes(newObj))
PVObject.push(newObj);
$rootScope.PVFactory = newObj;
};
var getPVObject = function() {
return PVObject;
};
return {
addPVObject: addPVObject,
getPVObject: getPVObject
};
})
但是问题出在这里:当我从controllerA
过渡到controllerB
时,它可以正常工作。
但是,当项目保存在controllerA
的末尾,并且以后又在controllerB
加载项目而没有从controllerA
进行加载时,我将无法访问该值。
从代码中可以看出,我什至尝试使用$rootscope
(尽管我知道这不是一个好习惯),但这没有帮助。一旦设置了对象,是否可以保存该对象,因此以后可以访问该对象,而无需通过再次设置该值的控制器?