#angularjs #ionic-framework
#angularjs #ionic-framework
Вопрос:
У меня есть сервис, который имеет две функции setItems() и GetItems(). Я использую функцию GetItems () для получения массива элементов, а также функцию setItems() для динамической установки массива элементов из контроллера.
.service('ItemService', ['$http', function ($http) {
var items = [{'id': '1', 'item_id': '1', 'item_name': 'Tomato', 'type_name': 'Vegitables','nos':'0'}, {'id': '2', 'item_id': '2', 'item_name': 'onion', 'type_name': 'Vegitables','nos':'0'}];
return {
getItems: function () {
return items;
},
setItems: function (value) {
items = value;
}
};
}]);
Моя функция контроллера заключается в следующем
.controller('aLLITEMSCtrl', ['$scope', '$stateParams', '$location', 'ItemService', '$timeout',
function ($scope, $stateParams, $location, ItemService, $timeout) {
var data = {};
$scope.data = data;
$timeout(function () {
$scope.items = ItemService.getItems();
}, 0);
$scope.set_item_nos = function (type, index) {
angular.forEach($scope.data.item[index], function (value, key) {
if (key == 'nos') {
$scope.data.item[index].nos = parseInt(value) 1;
}
});
ItemService.setItems($scope.data.item);
}
$scope.goCart = function () {
$timeout(function () {
$scope.items = ItemService.getItems();
}, 0);
$location.path('/yourcart');
}
}])
Здесь я использую GetItems() для получения массива элементов. а также я увеличиваю nos из другой функции, а затем вызываю setItems(), чтобы снова установить элементы массива. Все работает нормально, как и ожидалось, я могу перейти к home и вернуться к тому же контроллеру, тогда и последнее присвоенное значение массива items будет таким же.
как я могу изначально установить массив элементов с помощью ajax-запроса? Мне нужно что-то вроде
.service('ItemService', ['$http', function ($http) {
var url = 'http://localhost/app/item/get/item';
var items = $http.get(url).then(function (response)
return response.data;
});
return {
getItems: function () {
return items;
},
setItems: function (value) {
items = value;
}
};
}]);
Я пробовал это, но если я изначально устанавливаю массив элементов с помощью запроса $ http каждый раз, когда я вызываю этот контроллер, массив элементов инициализируется ответом. но я хочу установить его только один раз, когда я вошел в контроллер. Затем я могу использовать метод setItems для динамического изменения этого массива.
Я новичок в AngularJS. Любая помощь будет заметна
Комментарии:
1. вы можете добавить другой метод в свой сервис для инициализации элементов. и вызовите его при запуске контроллера.