1

リソース呼び出しで約束を返す最新の Angular.js 1.1.5 を使用しています。これらに依存する別のリクエストが続く複数のリクエストがある場合、どのような実装が正しいでしょうか?

$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: オブジェクト # にはメソッド 'then' がありません

template は、リソースを返す次のファクトリです。

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;
}]); 
4

2 に答える 2

5

ご参考までに

1.2.0 以降では、次$resourceのものが公開されてい$promiseます。

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

ドキュメンテーション

于 2013-12-03T14:41:58.577 に答える
2

完全に公開されたプロミスは現在、マスターでのみ利用可能です (コミットhttps://github.com/angular/angular.js/commit/05772e15fbecfdc63d4977e2e8839d8b95d6a92d )。

1.1.3 から、$resource は promise のthen関数を$then(同様に $resolved)経由で公開しました。

Template.$addNew(value).$then(
    function( value ){newids.push(value);},
    function ( error ) {console.log ('error')}
)
于 2013-06-28T10:55:16.873 に答える