目前在Ionic中编写一个原型应用程序,对于离子和角度来说都是新手。我已经编写了一个包含大约25个对象的小JSON API,我已经能够在我们称之为“Library”的页面上显示它们的列表,我现在正在尝试使用这些列表项作为链接我们称之为“课程”的每个项目的单独页面。变量$ scope.lessonId在控制器中正确设置,但在服务中设置为undefined。是否有可能实现我正在尝试的目标,或者我只是做错了?
.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];
}
}
});
}
};
})
答案 0 :(得分:1)
如果您想使用服务中的值,则必须将$ scope.lessonId变量传递给服务调用。
.controller('LibraryLessonCtrl', function($scope, $stateParams, LessonService) {
$scope.lessonId = $stateParams.libraryId;
console.log($scope.lessonId);
LessonService.getLessonId($scope.lessonId)
.then(function(response){
$scope.lesson = response;
console.log($scope.lesson);
});
}).service ('LessonService', function($http){
return { getLessonId: function(lessonId) {
return $http.get('api/postsAPI.json')
.then(function (response) {
console.log(lessonId);
for(i=0;i<response.data.length;i++){
if(response.data[i].post_id == lessonId){
return response.data[i];
}
}
});
}
};
})
答案 1 :(得分:0)
您可以通过将Id传递给服务并将其存储在那里来实现。请尽量不要将$ scope变量传递给服务,因为这不是一个好习惯。你可以这样做:
.service ('LessonService', function($http){
var lessionId;
return {
/*other methods*/
setLessionId: function(id) {
lessionId = id;
},
getLessionId: function(){
return lessionId;
}
};
})