Javascript 将函数参数传递给$scope.$apply?
我使用$scope.$apply进行回调,特别是使用Stripe。目前我有一些代码,比如Javascript 将函数参数传递给$scope.$apply?,javascript,angularjs,callback,Javascript,Angularjs,Callback,我使用$scope.$apply进行回调,特别是使用Stripe。目前我有一些代码,比如 var stripeCallback = function (status, response) { if (!response.error) { // do something } else { // do something else } }; $scope.submit = function () { $scope.errorMessa
var stripeCallback = function (status, response) {
if (!response.error) {
// do something
} else {
// do something else
}
};
$scope.submit = function () {
$scope.errorMessage = 'Processing...';
$scope.buttonDisabled = true;
// can't use bindings for some reason
var myForm = $('#paymentform');
Stripe.createToken(myForm, function (status, response) {
$scope.$apply(stripeCallback);
});
};
问题是我无法获得
stripeCallback
的任何参数,即response
。是否有任何方法可以将函数参数传递给$scope.$apply
?我找不到任何文档参考。将stripeCallback
包装到匿名函数中:
var stripeCallback = function (status, response) {
....
};
$scope.submit = function () {
$scope.errorMessage = 'Processing...';
$scope.buttonDisabled = true;
// can't use bindings for some reason
var myForm = $('#paymentform');
Stripe.createToken(myForm, function (status, response) {
$scope.$apply(function() {
stripeCallback(status, response);
});
});
};
您也可以在调用回调函数后调用
$scope.$apply()
:
Stripe.createToken(myForm, function (status, response) {
stripeCallback(status, response);
$scope.$apply();
});
这个问题闻起来要么是一个绝对的JavaScript初学者,要么是OPs大脑中的一些代码阻塞没问题。这个问题问得非常清楚,所以你应该得到一个答案。太好了!很高兴知道。我刚刚读到了
$digest
,现在这更有意义了。在这种情况下,使用$scope.$digest()
或$scope.$apply()
被认为是更好的做法吗?@sean9999,如前所述,您通常应该使用$apply()
,否则您可能无法更新所有视图。如果您完全肯定只需要更新$scope
的视图,那么可以使用$digest
来提高效率。但如果将来情况发生变化怎么办?使用$apply
,注意安全,不要后悔。