2017-09-14 20 views
1

私のアプリケーションのJSONを取得するために使用するURLは、動的パラメータ(:id)を持っています。私はこれでどのように仕事をすることができるのかよくわからないので、ユーザーが選択したIDを渡します。ちょっとした指導が必要です。

app.factory('bookcategories', ['$http', function($http) { 
    return $http.get('http://52.41.65.211:8028/api/v1/categories/:id/books.json') 
    .success(function(data) { 
     return data; 
    }) 
    .error(function(err) { 
     return err; 
    }); 
}]); 

コントローラ

app.controller('BookCategoryController', ['$scope', 'categories', '$routeParams', function($scope, categories, $routeParams) { 
    categories.success(function(data) { 
    $scope.detail = data.categories[$routeParams.bookId]; 
    $scope.currentCategoryIndex = parseInt($routeParams.categoryId); 

     $scope.myCategoriesDetails = $scope.category; 
    }); 
}]); 

app.js

... 
    .when('/categories/:categoryId', { 
    controller: 'BookCategoryController', 
    templateUrl: 'views/booksincategory.html' 
}) 
... 

HTML

<h3 class="title">{{book.title}}</h3> 
+0

工場は、サービスの利用者が呼び出すことができるメソッドを持つオブジェクトを返すことになっています。あなたの工場は$ httpを直接呼び出して約束を返します。 –

+0

'bookcategories'はサービスでなければなりません。 Btw。 'bookcategories'はあなたのコードで使われていませんか? – lin

+0

Use1937021、あなたは「正しい答え」に印をつけたくないと思う。あなたのすべての質問をチェックし、正しい答えをマークしてください。おかげで – lin

答えて

1

次のコード例のような小さなサービスでこれを実現できます。工場は間違った選択です。

app.service('bookCategories', ['$http', function($http) { 
    this.get = function (id) { 
     return $http.get('http://52.41.65.211:8028/api/v1/categories/'+ id + '/books.json') 
     .success(function(data) { 
      return data; 
     }) 
     .error(function(err) { 
      return err; 
     }); 
    }; 
}]); 

そして、それが好きな使用より:

app.controller('MyCtrl', function(bookCategories) { 
    bookCategories.get(1).then(function (result) { 
    console.log(result); 
    }); 
}); 
+0

*ここでは工場が間違った選択です*あなたが投稿したコードは、実際にはサービスとして偽装された工場です。実際のサービスは 'this'を初期化し、何も返さないでしょう。 –

関連する問題