我想将数据从控制器1共享到另一个控制器
我的第二个控制器中出现未定义的错误。有人能告诉我我的代码有什么问题吗?
服务
app.service('var_transfer_service', function(){
var test_var;
return {
getVar: function () {
return test_var;
},
setVar: function( _test_var ) {
test_var = _test_var;
console.log(test_var);//show the object content in my console
}
}
})
控制器1
app.controller('homeCtrl', function($scope,$http, $filter ,var_transfer_service){
$scope.search_item = function ($event,item){
console.log(item)
var latt = item.lat;
var lngt = item.lng;
var_transfer_service.setVar(item);
}
});
控制器2
app.controller('MapCtrl',function($scope,var_transfer_service, $state, $cordovaGeolocation) {
var transferred_var = var_transfer_service.getVar();
console.log(transferred_var); //undefined object
});
答案 0 :(得分:1)
未定义,因为它未初始化:
var test_var;
你只在setVar函数上设置一个值,该函数在secound控制器的$ scope.search_item函数中调用(你从不调用)。
你的缩进行为是什么?
答案 1 :(得分:0)
您使用了服务,但写了一个工厂。
Angular服务返回函数实例,因此将函数放在函数作用域上,使用" this"。
使用服务:
app.service('var_transfer_service', function(){
var test_var;
this.getVar = function () {
return test_var;
};
this.setVar = function( _test_var ) {
test_var = _test_var;
console.log(test_var);//show the object content in my console
}
}
基本上,角度服务返回函数本身,但工厂返回函数的返回值 - 所以,你写了一个工厂。
如果您使用app.factory
:
app.factory('var_transfer_service', function(){
var test_var;
return {
getVar: function () {
return test_var;
},
setVar: function( _test_var ) {
test_var = _test_var;
console.log(test_var);//show the object content in my console
}
}
})