В настоящее время написано прототип приложения в ионном, довольно новое для ионного и углового. Я написал небольшой JSON API с примерно 25 объектами в нем, я смог отобразить их список на странице, которую мы будем называть «Библиотека», теперь я пытаюсь использовать эти элементы списка в качестве ссылок на отдельную страницу для каждого элемента, которую мы назовем «уроком». Переменная $ scope.lessonId устанавливается правильно в контроллере, но устанавливается как неопределенная в службе. Можно ли достичь того, что я пытаюсь сделать, или я просто делаю это неправильно?
.controller('LibraryLessonCtrl', function($scope, $stateParams, LessonService) {
$scope.lessonId = $stateParams.libraryId;
console.log($scope.lessonId);
LessonService.getLessonId()
.then(function(response){
$scope.lesson = response;
console.log($scope.lesson);
});
})
.service ('LessonService', function($http){
return { getLessonId: function() {
return $http.get('api/postsAPI.json')
.then(function (response, lessonId) {
console.log(lessonId);
for(i=0;i<response.data.length;i++){
if(response.data[i].post_id == lessonId){
return response.data[i];
}
}
});
}
};
})
передать его в вызове метода 'LessonService.getLessonId()' и добавить параметр в методе, как 'getLessonId: функция (lessonId)' –
Вы на правильном пути с разделением логики между контроллером и сервис, но вы должны четко определить границы, чтобы у вас была четкая SOS, а это значит, что служба не должна знать ничего о области $. Вместо этого извлеките то, что необходимо в контроллере, и передайте эти данные службе в виде параметров (ов) любых операций (методов), которые могут быть вызваны. В этом случае в качестве параметра к методу службы должен находиться контроллер passe '$ scope.lessionId'. – Igor