[英]Return nested promise to parent function
在大多数angularjs教程中,我已经看到Promise链导致更改范围变量。
$http.get(someURL).then(function (value) {
$scope.someValue = value;
});
是否可以将该值返回给父函数? 我尝试过的方法只会返回另一个承诺。
$scope.test = function(){
return $http.get(someURL).then(function (value) {
return value;
});
};
$scope.test = function(){
var deferred = $q.defer();
$http.get(someURL).then(function (value) {
deferred.resolve(value);
});
return deferred.promise;
}
我不想链接另一个诺言,只返回json即可执行以下操作:
<button ng-click='some_vars = test()'>Get ajax</button>
<ul ng-repeat='var in some_vars'>
<li>{{var.title}}</li>
</ul>
IMO,这是您应该这样做的方式:
在您的控制器中执行以下操作:
$scope.some_vars=[];
$scope.loadVars = function(){
$http.get(someURL).success(function (data) {
$scope.some_vars=data;
});
};
您认为这样做:
<button ng-click='loadVars()'>Get ajax</button>
<ul ng-if="some_vars.length>0" ng-repeat='var in some_vars'>
<li>{{var.title}}</li>
</ul>
容易得多,对吗?
但是, 如果您使用的是1.2.0-rc.3。之前的Angular版本。 并且您确实想自动取消承诺( 我强烈建议您反对 ),则必须在模块的配置中更改$parseProvider
的设置,如下所示:
.config(function($parseProvider){
$parseProvider.unwrapPromises(true);
})
Promise unwrapping已在1.2版中删除,并且在1.2.0-rc.3。版中已完全弃用。
您可能需要看一下本文档: 从以前的版本迁移 。
$ parse:由于fa6e411d,诺言解包已被删除。 从1.2.0-rc.3。开始不推荐使用。 不能再打开它。 删除了两种方法:
$parseProvider.unwrapPromises $parseProvider.logPromiseWarnings
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.