gpt4 book ai didi

javascript - 如何访问 Angularjs 中 Promise 内的范围?

转载 作者:行者123 更新时间:2023-11-28 17:55:45 25 4
gpt4 key购买 nike

这是我的 Controller :

translateApp.controller('translateCtrl', function ($scope, $http) {
$scope.spinner = false;
$scope.talkButton = true;

function redirectRecognizedTextOutput() {
artyom.redirectRecognizedTextOutput((recognized, isFinal) => {
if (isFinal) {
// scope can't be read
$scope.talkButton = true;
$scope.spinner = false;
} else {
console.log("wait")
}

});
}

$scope.start = function () {
// I set spinner and talkButton values and call the function
$scope.spinner = true;
$scope.talkButton = false;
redirectRecognizedTextOutput()
}
})

我的问题是 $scope.spinner$scope.talkButton 无法按预期工作。我试着把它放在 promise 之前,它起作用了。所以我尝试了类似的事情

function redirectRecognizedTextOutput() {
var vm = this
artyom.redirectRecognizedTextOutput((recognized, isFinal) => {
if (isFinal) {
vm.spinner = false;
vm.talkButton = true;
} else {
console.log("wait")
}
});
}

但仍然没有任何变化,也没有错误。我做错了吗?任何帮助将不胜感激。

最佳答案

也许消化周期可能会停止。我认为使用 scope.apply() 可能会解决您的问题。

function redirectRecognizedTextOutput() {
var vm = this
artyom.redirectRecognizedTextOutput((recognized, isFinal) => {
if (isFinal) {
vm.spinner = false;
vm.talkButton = true;
} else {
console.log("wait")
}
$scope.$apply()
});
}

关于javascript - 如何访问 Angularjs 中 Promise 内的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44484003/

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