8

Angularメーリングリストに投稿する代わりに、これはjavascriptの質問の方が多いと思います。SOコミュニティもより迅速な対応を提供できることを願っています。

データをサービスにカプセル化し、コントローラーに挿入しようとしています。

angular.module('myApp.services', ['ngResource']).
    factory('Player', function($resource){
        var Player ;
        Player = {
            resource: $resource('/api/Player/:_id', {} )
        };
        return Player
});


function PlayerDetailCtrl(Player, $routeParams, $scope) {
    $scope.resource = Player.resource.get({_id:$routeParams._id});
}
PlayerDetailCtrl.$inject = ['Player', '$routeParams', '$scope'];

例外をスローします

TypeError: Object #<Object> has no method 'query'

$scope.resource = Player.Player.resource.get({_id:$routeParams._id});また、エラーをスローします

TypeError: Object #<Object> has no method 'query'

以下が動作します。

angular.module('myApp.services', ['ngResource']).
    factory('Player', function($resource){
        var Player ;
        Player= $resource('/api/Player/:_id', {} )
        return Player
});


function PlayerDetailCtrl(Player, $routeParams, $scope) {
    $scope.resource = Player.Player.get({_id:$routeParams._id});
}
PlayerDetailCtrl.$inject = ['Player', '$routeParams', '$scope'];

私の意図は、にさらにデータとメソッドを追加することPlayerです。では、どうすれば最初の(オブジェクトフォーム)を機能させることができますか?

4

3 に答える 3

6

あなたは工場を作っています、これは非典型的なやり方です。インスタンスを返したくありません。Angularはコントローラーにインスタンスを提供します。

 factory('Player', function ($resource) { 
    return $resource('/api/Player/:_id', { });
 })

これが私がcakephpRESTサービスと対話するために書いたサービスです。しばらく前に書いたので、イラストとしてとらえて、リファクタリングするかもしれません。

 factory('CommentSvc', function ($resource) {
    return $resource('/cakephp/demo_comments/:action/:id/:page/:limit:format', { id:'@id', 'page' : '@page', 'limit': '@limit' }, {
      'initialize' : { method: 'GET', params: { action : 'initialize', format: '.json' }, isArray : true },
      'save': { method: 'POST', params: { action: 'create', format: '.json' } },
      'query' : { method: 'GET', params: { action : 'read', format: '.json' } , isArray : true },
      'update': { method: 'PUT', params: { action: 'update', format: '.json' } },
    });

})。

于 2012-06-28T20:32:12.370 に答える
0

JSがPlayerのコードについて不平を言っているようです。私はPlayer= $resource('/api/Player/:_id', {} )makesPlayerにプロパティ呼び出しがあると思いますqueryPlayer変更したフォームには、そのプロパティがありません。

于 2012-06-28T19:12:06.527 に答える
0

さて、数回試した後、次のことがうまくいきました。

Player = {
            resource: function() {
                     return $resource('/api/Player/:_id', {} )
            }
        };

これでは、リソースオブジェクトを明示的に返します。しかし、それがどのように違うのか説明することはできません

resource: $resource('/api/Player/:_id', {} )

于 2012-06-28T19:50:02.220 に答える