gpt4 book ai didi

angularjs - 无法在 strip 回调中完全访问 $scope 变量?

转载 作者:行者123 更新时间:2023-12-04 14:00:26 24 4
gpt4 key购买 nike

我在尝试将 strip 集成到有 Angular 的项目中时遇到了奇怪的问题。我在我的 Controller 中运行 strip 方法,我想从回调中更新各种范围值。我相信存在一些我不理解的范围问题。我可以在回调中控制台记录我的范围变量,更新它们并再次控制台日志以查看新值。但是,如果我尝试在回调之外再次记录变量,我会得到旧值,然后新值不会进入我的 View 。我还尝试将我的 $scope 原语移动到 $scope 对象,但无济于事。这是一个例子。

app.controller('checkoutCtrl', function ($scope) {

// default values
$scope.receipt = {};
$scope.paymentSuccess = false;
$scope.saveCardForFuture = true;

Stripe.card.createToken($scope.card, function (status, res) {

$scope.receipt = res.data;
$scope.paymentSuccess = true;

if ($scope.saveCardForFuture === true) {
// save card token
}

// tests cases
console.log($scope.saveCard) //logs undefined
console.log($scope.receipt) //logs the response data
console.log($scope.paymentSuccess) //logs true
});

// timeout long enough to wait for stripe response
$timeout(function() {
console.log($scope.receipt); //logs {}
console.log($scope.paymentSuccess) //logs false
}, 1000);

});

注意:Stripe 没有作为 Controller 依赖项传递,我只是从我的 html 索引页面全局包含它。我还没有找到将其作为可注入(inject)依赖项包含在内的方法,但必须有更好的方法。

最佳答案

您在 strip 回调中离开了 angularjs 世界。用 $scope.$apply(fn); 括起回调 block ;

一些不错的阅读:http://jimhoskins.com/2012/12/17/angularjs-and-apply.html

app.controller('checkoutCtrl', function ($scope) {

// default values
$scope.receipt = {};
$scope.paymentSuccess = false;
$scope.saveCardForFuture = true;

Stripe.card.createToken($scope.card, function (status, res) {
$scope.$apply(function () {
$scope.receipt = res.data;
$scope.paymentSuccess = true;

if ($scope.saveCardForFuture === true) {
// save card token
}

// tests cases
console.log($scope.saveCard) //logs undefined
console.log($scope.receipt) //logs the response data
console.log($scope.paymentSuccess) //logs true
});
});

// timeout long enough to wait for stripe response
$timeout(function() {
console.log($scope.receipt); //logs {}
console.log($scope.paymentSuccess) //logs false
}, 1000);

});

关于angularjs - 无法在 strip 回调中完全访问 $scope 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24039546/

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