2016-12-21 9 views
3

IからAngularJSを勉強していません。私はREST単一の項目を取得してもらうには、機能

angular.module('core.book').factory('Book', [ '$resource', function($resource) { 
return $resource('books/:bookId.json', {}, { 
    query : { 
     method : 'GET', 
     params : { 
      bookId : 'books' 
     }, 
     isArray : true 
    } 
}); 
} ]); 

:作品

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; 
        } 
       } ] 
    }); 

コントローラ:

angular.module('bookList').component('bookList', { 
templateUrl : 'book-list/book-list.template.html', 
controller : [ 'Book', function BookListController(Book) { 
    this.books = Book.query(); 
} ] 
}); 

とサービス13ステップクロームコンソールは、私にこのコントローラで

Book.get is not a function 

エラーを与えた後、ここで何が間違っているのかわからない。

答えて

1

依存性注入が入れ替えられました。

controller : [ '$routeParams', 'Book', 
      function BookDetailController(Book, $routeParams) { 

関数に渡される文字列パラメータの配列は、名前ではなく位置順に一致します。変数名は何でもかまいません。この場合、$routeParamsのインスタンスをとり、それをBook変数に割り当てます。逆の場合も同様です。

controller : [ '$routeParams', 'Book', 
      function BookDetailController($routeParams, Book) { 

問題を修正する必要があり、注射の順序を切り替えます

関連する問題