Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用带承诺的Restanglar(延迟)_Javascript_Angularjs_Angular Promise_Restangular_Deferred - Fatal编程技术网

Javascript 使用带承诺的Restanglar(延迟)

Javascript 使用带承诺的Restanglar(延迟),javascript,angularjs,angular-promise,restangular,deferred,Javascript,Angularjs,Angular Promise,Restangular,Deferred,在我的应用程序中,我使用restanglar,我有这样的方法(我从普通的$http请求转换而来)。 我不知道如何正确地使用restanglar和promissions。怎么可能呢 这是我的密码: var test = function(){ var data = '{"Office":"' + office + '"}'; var deferred = $q.defer(); var person = Restangular.one('persons', id) $scope.person.pa

在我的应用程序中,我使用restanglar,我有这样的方法(我从普通的$http请求转换而来)。 我不知道如何正确地使用restanglar和promissions。怎么可能呢

这是我的密码:

var test = function(){
var data = '{"Office":"' + office + '"}';
var deferred = $q.defer();
var person = Restangular.one('persons', id)
$scope.person.patch(data).then(function (response) {
  deferred.resolve(response);
},function (err, status) {
  deferred.reject(status);
});
return deferred.promise;
}


var runIt = function(){
    test.then(...)...
}

您可以简单地使用
patch
方法返回的承诺,而不是创建新的自定义承诺

代码

var test = function() {
    var data = '{"Office":"' + office + '"}';
    var person = Restangular.one('persons', id);
    //returned promise
    return person.patch(data).then(function(response) {
        return response.data; 
    }, function(err, status) {
        return response.status;
    });
}

test().then(...)

但我得到angular.js:11706 TypeError:cannotreadproperty'then'的未定义检查我的更新code@brabertaser1992查看更新后的,基本上应该将
$scope.person
重命名为
person
,因为person不存在于$scope中,它是javascript变量。我确实更新了我的答案,并在你的代码中显示出来。@brabertaser1992很高兴能帮助你。谢谢:-)还有一个问题:功能(错误,状态){return response.status;-我应该在这里传递什么,而不是response>@brabertaser1992,因为我可以看到您的旧代码传递了错误,所以我使用了
response.error
,如果您想传递
结果
,那么整个响应对象将传递给调用方函数,如
数据
标题
&de>状态