Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将函数参数传递给$scope.$apply?_Javascript_Angularjs_Callback - Fatal编程技术网

Javascript 将函数参数传递给$scope.$apply?

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

我使用$scope.$apply进行回调,特别是使用Stripe。目前我有一些代码,比如

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
,注意安全,不要后悔。