说我有这段代码:
angular.controller('SomeController', function($scope, SomeService) {
$scope.thing = 'hello';
const successCallback = (response) => $scope.thing = response;
SomeService.getTask(someData, successCallback, errorCallback);
})
在SomeService触发SuccessCallback后,它将更新$ scope.thing,一切都很好,花花公子。
但是,如果我要将SomeService包装在这样的承诺中,那只是为了玩游戏:
angular.controller('SomeController', function($scope, SomeService) {
$scope.thing = 'hello';
const successCallback = (response) => $scope.thing = response;
const promiseWrapper = (someData) => new Promise(
(resolve, reject) => SomeService.getTask(someData, resolve, reject) );
promiseWrapper(someData)
.then( successCallback );
})
它会使用正确的数据触发successCallback,但不会更新$ scope对象。
我并没有真正尝试像这样的代码创建代码,只是想知道什么是通过更新范围来保持successCallback的承诺。
我正在使用Angular 1.5和Babel ES6转换器。
谢谢!
答案 0 :(得分:1)
由于您使用的是Promise
非角度对象,因此必须使用以下方式强制更新$scope
道具:
$scope.$apply(() => {
$scope.thing = response;
});