我认为这可能更多是javascript问题,而不是在Angular邮件列表中发布。希望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
添加更多数据和方法。那么我怎样才能使第一个(对象形式)工作!
答案 0 :(得分:6)
你正在创建一个工厂,这是非典型的做法。您不希望返回实例。 Angular将为您提供控制器中的实例。
factory('Player', function ($resource) {
return $resource('/api/Player/:_id', { });
})
这是我编写的与cakephp REST服务交互的服务。我写了一会儿,所以只是把它作为插图,我可以重构。
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' } },
});
})。
答案 1 :(得分:0)
看起来JS正在抱怨Player的一些代码。我想Player= $resource('/api/Player/:_id', {} )
让Player
有一个属性调用query
。您更改为的格式不会使Player
具有该属性。
答案 2 :(得分:0)
好的,经过几次尝试后,以下工作。
Player = {
resource: function() {
return $resource('/api/Player/:_id', {} )
}
};
在此我明确返回资源对象。但无法解释它与
的区别 resource: $resource('/api/Player/:_id', {} )