在 Angularjs 中使用 $resource 替代 http 无效
Using the $resource as alternative to http in Angularjs not working
我正在学习 Angularjs,在我的第一个应用程序中,我将 $http 替换为 $resource
并出现错误。以下是我之前的服务和现在的服务:
angular.module('myApp')
.service('fetchData', function ($http, $rootScope, myService) {
// AngularJS will instantiate a singleton by calling "new" on this function
this.fetchNames=function() {
return $http.get(myService.getDomainUrl() + '/names.json');
}
});
下面是我的新代码 $resource
angular.module('myApp')
.service('fetchData', function ($resource, $rootScope, myService) {
// AngularJS will instantiate a singleton by calling "new" on this function
return $resource(myService.getDomainUrl() + '/names.json', {
query:{
method: 'GET',
cache: true
}
});
});
我收到以下错误:
fetchData.fetchNames(...).success 不是函数
当我尝试处理调用此函数时的成功回调。请告诉我哪里出错了,以及处理 Angularjs.
中的 $resource
的正确方法是什么
查看文档:https://docs.angularjs.org/api/ngResource/service/$resource
正确的方法是
var t = $resource(...);
t.query(successCallback, errorCallback)
另请注意:
The $http legacy promise methods success and error have been
deprecated. Use the standard then method instead. If
$httpProvider.useLegacyPromiseExtensions is set to false then these
methods will throw $http/legacy error.
$resource 是一个包装器。
声明为
var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({userId:123}, function() {
user.abc = true;
user.$save();
});
您可用的操作(调用方法)将是:
{ 'get': {method:'GET'},
'save': {method:'POST'},
'query': {method:'GET', isArray:true},
'remove': {method:'DELETE'},
'delete': {method:'DELETE'} };
我假设(没有你使用的代码)你没有调用正确的方法。
例如
var resource = $resource(....);
并像
一样使用它
resource.query({params}, function(){/*your success callback*/})
我正在学习 Angularjs,在我的第一个应用程序中,我将 $http 替换为 $resource
并出现错误。以下是我之前的服务和现在的服务:
angular.module('myApp')
.service('fetchData', function ($http, $rootScope, myService) {
// AngularJS will instantiate a singleton by calling "new" on this function
this.fetchNames=function() {
return $http.get(myService.getDomainUrl() + '/names.json');
}
});
下面是我的新代码 $resource
angular.module('myApp')
.service('fetchData', function ($resource, $rootScope, myService) {
// AngularJS will instantiate a singleton by calling "new" on this function
return $resource(myService.getDomainUrl() + '/names.json', {
query:{
method: 'GET',
cache: true
}
});
});
我收到以下错误: fetchData.fetchNames(...).success 不是函数
当我尝试处理调用此函数时的成功回调。请告诉我哪里出错了,以及处理 Angularjs.
中的$resource
的正确方法是什么
查看文档:https://docs.angularjs.org/api/ngResource/service/$resource 正确的方法是
var t = $resource(...);
t.query(successCallback, errorCallback)
另请注意:
The $http legacy promise methods success and error have been deprecated. Use the standard then method instead. If $httpProvider.useLegacyPromiseExtensions is set to false then these methods will throw $http/legacy error.
$resource 是一个包装器。
声明为
var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({userId:123}, function() {
user.abc = true;
user.$save();
});
您可用的操作(调用方法)将是:
{ 'get': {method:'GET'},
'save': {method:'POST'},
'query': {method:'GET', isArray:true},
'remove': {method:'DELETE'},
'delete': {method:'DELETE'} };
我假设(没有你使用的代码)你没有调用正确的方法。 例如
var resource = $resource(....);
并像
一样使用它resource.query({params}, function(){/*your success callback*/})