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实例。啊,这很有意义。谢谢很乐意帮忙!