app.controller('ItemDetailsCtrl', function($scope,FavoriteService) {
var parameter = $scope.Diamoni.Favorites;
});
app.service("FavoriteService",[function(){
this.fav = 0;
}]);
我想将ItemDetailsCtrl控制器中的变量参数传递给FavoriteService,所以this.fav = 0;成为this.fav =参数有什么建议吗?提前谢谢。
答案 0 :(得分:0)
不要使用$ rootScope,而是使用函数来设置参数
在您的服务中
var self = this;
this.setParam = function(param){
self.fav = param
}
在您的控制器中
FavouriteService.setParam(parameter)
答案 1 :(得分:0)
我认为最干净的方法是通过get / set方法公开你的fav
变量。
app.controller('ItemDetailsCtrl', function($scope, FavoriteService) {
var parameter = $scope.Diamoni.Favorites;
FavoriteService.setFav(parameter);
console.log(FavoriteService.getFav()); // will be the proper value
});
app.service("FavoriteService",[function(){
var fav = 0;
this.setFav = setFav;
this.getFav = getFav;
function setFav(favValue) {
fav = favValue;
}
function getFav() {
return fav;
}
}]);
答案 2 :(得分:0)
试试这个:
app.controller('ItemDetailsCtrl', function($scope,FavoriteService) {
var parameter = $scope.Diamoni.Favorites;
FavoriteService.setParam(parameter);
});
app.service("FavoriteService",[function(){
var service = this;
service.setParam = function(parameter) {
service.fav = parameter;
};
}]);
我在服务中添加了一个方法来设置fav
变量。
使用工厂代替服务很容易实现这种逻辑。如果你想我可以发给你工厂代码片段
<强> 修改 强>
使用工厂:
app.controller('ItemDetailsCtrl', function($scope,FavoriteService) {
var parameter = $scope.Diamoni.Favorites;
FavoriteService.setParam(parameter);
});
app.factory('FavoriteService', ['', function(){
var service = {}
service.setParam = function(parameter) {
service.fav = parameter;
};
return service;
}])
}]);
答案 3 :(得分:0)
这是一个简洁的数据共享服务示例,我们使用set
和get
方法存储不同的数据。请记住将值存储在对象中,否则有时会得到一些奇怪的结果。
服务:
graphs.service('graphsData', [function() {
var graphs = this;
var data = {
all: null,
list: null,
single: null
};
graphs.set = function(k, v) {
data[k] = v;
};
graphs.update = function(k, s, v) {
data[k][s] = v;
};
graphs.get = function(k, v) {
return data;
};
}]);
来自您的控制器:
// Stores the this.fav variable as myFavoriteValue (data.myFavoriteValue)
graphsData.set('myFavoriteValue', this.fav);
要获取该值,只需调用服务的get
函数:
graphsData.get().myFavoriteValue;