【发布时间】:2015-11-11 04:56:27
【问题描述】:
我有最简单的角度控制器:
tc.controller('PurchaseCtrl', function () {
var purchase = this;
purchase.heading = 'Premium Features';
this.onSuccess = function (response) {
console.log('Success', response);
lib.alert('success', 'Success: ', 'Loaded list of available products...');
purchase.productList = response;
};
this.onFail = function (response) {
console.log('Failure', response);
};
console.log('google.payments.inapp.getSkuDetails');
lib.alert('info', 'Working: ', 'Retreiving list of available products...');
google.payments.inapp.getSkuDetails(
{
'parameters': {'env': 'prod'},
'success': purchase.onSuccess,
'failure': purchase.onFail
});
});
还有观点:
<div class="col-md-6 main" ng-controller="PurchaseCtrl as purchase">
{{purchase}}
</div>
打印出来:
{"heading":"高级功能"}
我认为当回调返回时,视图将使用任何新数据进行更新。我错过了什么吗?回调返回,我在控制台中看到了 dtaa。
使用 $scope 模式,我认为我会使用 $scope.$apply 到异步方法,但我不知道如何在此处执行此操作。
【问题讨论】:
-
您需要注入 $scope 并执行 scope.$apply 或以某种方式手动调用摘要循环,因为这些函数不是在 angular 的控制下运行的。但理想情况下,您可以将其抽象为角度服务并使用承诺模式创建延迟对象并避免执行范围。$apply
标签: angularjs callback angularjs-scope