Я пытаюсь установить данные запроса HTTP в одном контроллере и позволить использовать данные в нескольких контроллерах. У меня есть что-то вродеугловой, как установить службы в моем случае
Мои услуги
angular.module('myApp').service('testService', ['Product','$q',
function(Product, $q) {
var products, targetProduct;
var deferred = $q.defer();
Product.query({
Id: 123
}, function(products) {
targetProduct = products[0];
deferred.resolve(products);
})
var getTargetProduct = function() {
var deferredtwo = $q.defer();
// return deferredtwo.promise;
deferred.promise.then(function(){
deferredtwo.resolve(targetProduct);
})
return deferredtwo.promise;
}
var setTargetProduct = function(targetProduct) {
targetProduct = targetProduct
}
return {
setTargetProduct: setTargetProduct,
getTargetProduct: getTargetProduct,
productPromise : deferred.promise
};
}
]);
контроллер нав
testService.productPromise.then(function(products){
$scope.products= products;
$scope.targetProduct = products[0];
})
//when user click the project ng-click = setTargetProduct(product);
$scope.setTargetProduct = function(targetProduct) {
testService.setTargetProduct(targetProduct)
}
деталь продукта контроллер
testService.getTargetProduct().then(function(targetProduct) {
// works when page first loads
// but I don't know how to update the targetProduct when user select different
//targetProduct which means they trigger setTargetProduct() method
$scope.targetProduct = targetProduct;
})
Как я уже говорил выше, я не знаю, как обновить targetProduct
в контроллере детали продукта, когда пользователь выбирает другой targetProduct
, Может ли кто-нибудь помочь мне в этом? Большое спасибо!
Что о прохождении в обратном вызове на службу от контроллера продукта, которое возникает всякий раз, когда продукт установлен? – lintmouse
@ dustmouse, который звучит как хорошая идея. Не могли бы вы привести несколько примеров? Благодаря! – FlyingCat
@FlyingCat, что такое 'testService.classPromise'? –