gpt4 book ai didi

javascript - 在 Promise 之后从 .catch 函数内访问 $scope

转载 作者:行者123 更新时间:2023-11-28 04:03:31 25 4
gpt4 key购买 nike

我遇到了无法解决的 $scope 问题。

我的应用程序使用 Google Firebase API 通过发布到 API 来对用户进行身份验证,然后通过更新 $scope 变量向用户显示成功/错误消息。这是我的功能

$scope.message = "";

$scope.signin = function () {

var auth = firebase.auth();
auth.signInWithEmailAndPassword(signinEmail, signinPassword).catch(function (error) {
var errorCode = error.code;
console.log("errorCode " + errorCode);
$scope.message = "An error Alert";
});
}

从我的登录函数中更新 $scope 工作正常,但在内部 catch 函数中访问它不起作用。

到目前为止我已经尝试过:

  1. 更改我的代码以使用“this”而不是 $scope - 这似乎会引起更大的头痛,因为使用“this”时 html 显示错误。 (可能是由于应用程序使用 ng-Route)我想保留我的应用程序使用 $scope 或“this”。

  2. 我尝试以各种方式将 $scope 注入(inject)到函数中,但没有成功。

  3. 我尝试创建第二个函数,可以从我的 catch block 中调用,$scope.updateMessage(){ },但该函数不会调用,因为它在 $scope 上。如果将其用作常规函数var fn = updateMessage(){ },则无法访问作用域。

最佳答案

谢谢各位的回复

由于我尝试更新 Angular 上下文之外的范围变量,因此我能够通过访问 HTML 元素并使用 $apply 来更改它

var scope = angular.element(document.getElementById('myElement')).scope();
scope.$apply(function () {
scope.message = errorMessage;
});

关于javascript - 在 Promise 之后从 .catch 函数内访问 $scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46888185/

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