我正在使用最新的Angular.js 1.1.5,它通过资源调用返回promise。当您有多个请求,然后是另一个依赖于这些请求的请求时,什么是正确的实现?
$scope.save = function() {
var newids = [];
angular.forEach ($scope.template.children, function (value){
//saves the children as a new template and returns the ID
Template.$addNew(value).then(
function( value ){newids.push(value);},
function ( error ) {console.log ('error')}
)
});
//updates the root template
$scope.template.childrenIDs = newids;
Template.$update($scope.template).then(
function( value ){ console.log('successfully saved')},
function ( error ) {console.log ('error')}
)
}
为此,我得到了一个错误:
类型错误:对象#没有方法"then"
模板是以下返回资源的工厂:
mongoAPI.
factory('Template', ['$resource', '$http', 'CONSTANTS', 'security', function($resource, $http, CONSTANTS, security) {
var actions = {
'addNew': {method:'POST'},
}
var res = $resource(CONSTANTS.url, {}, actions)
return res;
}]);
仅供参考
从1.2.0开始,$resource
暴露$promise
:
Template.$addNew(value).$promise.then(
function( value ){newids.push(value);},
function ( error ) {console.log ('error')}
)
文档
完全公开的承诺目前仅在master(commithttps://github.com/angular/angular.js/commit/05772e15fbecfdc63d4977e2e8839d8b95d6a92d)。
从1.1.3开始,$resource通过$then
暴露了promise的then
函数(同样是$resolved):
Template.$addNew(value).$then(
function( value ){newids.push(value);},
function ( error ) {console.log ('error')}
)