У меня есть ProductService, который извлекает данные и передает ProductsController. Это код.Как получить доступ к переменной контроллера в сервисе в AngularJS
sampleApp.factory('ProductService', ['$http', function ($http){
var req = {
method: 'POST',
url: 'ProductData.txt',
//url: 'http://localhost/cgi-bin/superCategory.pl',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }//,
//data: { action: 'GET' }
};
return {
GetProducts: function() {
return $http(req);
},
GetDetailInfo: function (ProductID) {
// HOW TO IMPLEMENT THIS
}
};
}]);
sampleApp.controller('ProductsController', function ($scope, $routeParams, ProductService, ShoppingCartService) {
$scope.Products = [];
$scope.GetProducts = function() {
ProductService.GetProducts().then(
function(response) {
if (response.data !== undefined) {
//alert (response.data);
console.log(response.data);
$scope.Products = response.data;
}
else {
alert ('undefined data');
}
},
function(Error) {
alert ('error worng');
}
);
};
$scope.GetProducts();
});
Теперь я хочу реализовать еще одну функцию в сервисе, которая дает подробную информацию о продукте. Но так как $ scope.Products недоступен в ProductService, я не могу закодировать и получить данные для желаемого ProductID.
Я хочу реализовать эту функцию в ProductService только в ProductsController, так как другая служба (которая требует данных о продукте) будет использовать этот ProductService.
Как решить эту проблему?
Если есть какая-либо лучшая архитектура для достижения того же, это также приветствуется.
Почему не хранить массив продуктов в службе вместо этого? – Michael
Я тоже могу это сделать. Но в соответствии с лучшей практикой AngularJS и SO предлагает свои всегда хорошие переменные хранилища в контроллере. Поправьте меня, если я ошибаюсь? –
№ Контроллер - хорошее место для хранения виртуальных машин, специфичных для этого вида. Если данные должны сохраняться и совместно использоваться несколькими диспетчерами/представлениями, то служба является наилучшим местом для хранения данных. @DeveshAgrawal. – mohamedrias