【发布时间】:2016-07-07 13:56:17
【问题描述】:
我有一个 AngularJS 应用程序 (1.4.10),我需要在两个控制器之间共享一些数据。
所以我做了我的工厂:
.factory('CardsForService', function($http, URL){
var service = {
"block_id": '',
"service_id": ''
};
service.save_data = function(block_id, service_id){
service.block_id = block_id;
service.service_id = service_id;
};
service.get_data = function(){
return service;
};
return service;
})
我在第一个控制器中插入数据:
$scope.open = function(id, type){
console.log(id +" "+type);
CardsForService.save_data(id, type);
...
我尝试在另一个控制器中获取数据,如下所示:
$scope.$on('$routeChangeSuccess', function() {
if (algo_to_used == "service"){
var data = CardsForService.get_data();
console.log(data);
} else {
}
});
console.log 输出如下:
Object {block_id: "", service_id: ""}
如果我在调用 save_data() 函数的同一个控制器中尝试相同的 get_data() 函数,我会得到正确的结果。
我错过了什么?
【问题讨论】:
-
我用你的代码创建了一个快速的 plunk (plnkr.co/edit/ariglr58rS21918yQc26?p=preview),它与 2 个控制器和服务之间的交互相关,它工作得很好。您的问题可能在您没有向我们展示的代码中的某个地方。您确定将 CardsForService 注入到两个控制器中吗?
标签: javascript angularjs controller