我正在学习 AngularJS:
https://docs.angularjs.org/tutorial/step_13
但是用我自己的例子。 13步后chrome控制台给我一个错误
Book.get is not a function
在此 Controller 中:
angular.module('bookDetail').component(
'bookDetail',
{
templateUrl : 'book-detail/book-detail.template.html',
controller : [ '$routeParams', 'Book',
function BookDetailController(Book, $routeParams) {
var self = this;
self.book = Book.get({
bookId : $routeParams.bookId
}, function(book) {
self.setTitle(book.title);
});
self.setTitle = function setTitle(title) {
self.mainTitle = title;
}
} ]
});
有效的 Controller :
angular.module('bookList').component('bookList', {
templateUrl : 'book-list/book-list.template.html',
controller : [ 'Book', function BookListController(Book) {
this.books = Book.query();
} ]
});
和服务:
angular.module('core.book').factory('Book', [ '$resource', function($resource) {
return $resource('books/:bookId.json', {}, {
query : {
method : 'GET',
params : {
bookId : 'books'
},
isArray : true
}
});
} ]);
我不知道这里出了什么问题。
最佳答案
您的依赖注入(inject)已交换。
controller : [ '$routeParams', 'Book',
function BookDetailController(Book, $routeParams) {
要传递给函数的字符串参数数组按位置顺序匹配,而不是按名称匹配。变量名可以是任意的。因此,在本例中,您将获取 $routeParams
的一个实例并将其分配给 Book
变量,反之亦然。
切换注入(inject)顺序应该可以解决问题:
controller : [ '$routeParams', 'Book',
function BookDetailController($routeParams, Book) {
关于angularjs - REST 获取单个项目 - get 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41260021/