Javascript 角度1$范围和ES6承诺
假设我有一段代码:Javascript 角度1$范围和ES6承诺,javascript,angularjs,promise,Javascript,Angularjs,Promise,假设我有一段代码: angular.controller('SomeController', function($scope, SomeService) { $scope.thing = 'hello'; const successCallback = (response) => $scope.thing = response; SomeService.getTask(someData, successCallback, errorCallback); })
angular.controller('SomeController', function($scope, SomeService) {
$scope.thing = 'hello';
const successCallback = (response) => $scope.thing = response;
SomeService.getTask(someData, successCallback, errorCallback);
})
SomeService启动SuccessCallback后,它将更新$scope.thing,一切都很好
然而,为了好玩,如果我用这样的承诺来包装某项服务:
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对象
我并不是真的想让这样的代码工作,只是想知道是什么阻止了promise中的successCallback更新范围
我使用的是Angular 1.5和Babel ES6 transpiler
谢谢 由于您使用的是非角度对象
Promise
,因此必须使用以下方法强制更新$scope
道具:
$scope.$apply(() => {
$scope.thing = response;
});
我只想问一下,为什么您仍然绑定到scope而不是controller实例。啊,这很有意义。谢谢很乐意帮忙!