angularjs - REST 获取单个项目 - get 不是函数

标签 angularjs

我正在学习 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/

相关文章:

javascript - 语法错误: Token '21' is an unexpected token at column 12 of the expression [2013-08-28 21:10:14] starting at [21:10:14]

angularjs - 将 yeoman Angular-fullstack 项目部署到 Azure

angularjs - HTML5 视频无法播放且媒体请求中止

javascript - AngularJS:在异步验证器完成之前阻止表单提交

javascript - 这个 AngularJS 工厂示例究竟是如何工作的?一些疑惑

javascript - 延迟 Angular UI 路由器 $stateChangeStart 直到收到服务器授权响应

javascript - 当未提供内容类型 '' 应用程序/Json 时,C# [WebMethod] 未命中

javascript - 需要在状态退出时关闭模态

javascript - 如何在 angular-chart.js 中对齐图例

angularjs - 当我使用 browser().navigateTo() 时,我如何才能看到 karma 看到的内容