app.controller('ItemDetailsCtrl', function($scope,FavoriteService) {
var parameter = $scope.Diamoni.Favorites;
});
app.service("FavoriteService",[function(){
this.fav = 0;
}]);
Я хотел бы передать параметр переменной из контроллера ItemDetailsCtrl в FavoriteService, So this.fav = 0; стать this.fav = параметр Любые предложения? Заранее спасибо.
Вот пример аккуратного обмена данными, где мы храним разные данные с помощью методов 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;
Не используйте $ rootScope, вместо этого используйте функцию для установки параметров
В вашем сервисе
var self = this;
this.setParam = function(param){
self.fav = param
}
В вашем контроллере
FavouriteService.setParam(parameter)
попробуйте это:
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;
}])
}]);
Я думаю, что самым чистым способом будет выставить свою переменную fav
через методы get/set.
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;
}
}]);
this
. Это, вероятно, работает, но это не соответствует моему мнению.
this
не будет поднимать определение функций, но я на самом деле интересно , если вы можете уточнить на каких - либо проблемах, которые могут возникнуть из - за этот синтаксис