新的Angular.js 1.1.5资源返回promise then()函数错误后跟另一个请求

时间:2013-06-28 09:45:18

标签: angularjs q angular-resource

我正在使用最新的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;
}]); 

2 个答案:

答案 0 :(得分:5)

FYI

从1.2.0开始$resource公开$promise

Template.$addNew(value).$promise.then(
    function( value ){newids.push(value);},
    function ( error ) {console.log ('error')}
)

Documentation

答案 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')}
)