gpt4 book ai didi

javascript - Angular 1 $scope 和 ES6 Promises

转载 作者:行者123 更新时间:2023-11-29 23:51:09 24 4
gpt4 key购买 nike

假设我有这段代码:

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 包装在这样的 promise 中,只是为了好玩:

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 转译器。

谢谢!

最佳答案

由于您正在使用 Promise,它是非 Angular 对象,您必须使用以下方式强制更新 $scopeprops:

$scope.$apply(() => {
$scope.thing = response;
});

JS Fiddle Demo

关于javascript - Angular 1 $scope 和 ES6 Promises,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42755186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com