我正在使用最新的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')}
)
}
为此我收到错误:
TypeError:Object#没有方法'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;
}]);
答案 0 :(得分:5)
从1.2.0开始$resource
公开$promise
:
Template.$addNew(value).$promise.then(
function( value ){newids.push(value);},
function ( error ) {console.log ('error')}
)
答案 1 :(得分:2)
完全公开的承诺目前仅在master(commit https://github.com/angular/angular.js/commit/05772e15fbecfdc63d4977e2e8839d8b95d6a92d)中可用。
从1.1.3开始,$ resource通过then
(同样$已解决)公开了承诺'$then
功能:
Template.$addNew(value).$then(
function( value ){newids.push(value);},
function ( error ) {console.log ('error')}
)