我正在使用AngularJS 1.1.3将新的$ resource与promises一起使用…
我如何从中获得回调?我尝试使用与$ http相同的方法:
$resource.get('...'). success(function(data, status) { alert(data); }). error(function(data, status) { alert((status); });
但是没有“成功”也没有“错误”功能…
我也尝试过:
$resource.get({ id: 10 },function (data) { console.log('success, got data: ', data); }, function (err) { alert('request failed'); });
即使返回的是 404 ,也总是打印“成功,有数据” 。
任何想法?
谢谢
从角度 资源 和角度1.2 的 PR开始 ,角度将切换为执行成功/错误检查的更简单方法。无需附加回调或$ then方法,Resource.get(..)和instance.get()都将支持$ promise方法,该方法自然会为这两者返回一个承诺。
从1.2版本开始,$ promise功能将启用: $ promise更改
将您的“获取”请求更改为类似以下内容(原始示例在angularjs.org主页上):
factory('Project', function($resource) { var Project = $resource('https://api.mongolab.com/api/1/databases' + '/youraccount/collections/projects/:id', { apiKey: 'yourAPIKey' }, { update: { method: 'PUT' } } ); Project.prototype.update = function(cb) { return Project.update({id: this._id.$oid}) .$promise.then( //success function( value ){/*Do something with value*/}, //error function( error ){/*Do something with error*/} ) }; Project.prototype.destroy = function(cb) { return Project.remove({id: this._id.$oid}) .$promise.then( //success function( value ){/*Do something with value*/}, //error function( error ){/*Do something with error*/} ) }; return Project; });
在控制器中的其他位置,您可以实例化资源“项目”实例,在该实例中,您可以使用相同的接口进行成功和错误操作:
var myProject = new Project(); myProject.$get({id: 123}). .$promise.then( //success function( value ){/*Do something with value*/}, //error function( error ){/*Do something with error*/} )