$scope在异步调用第三方API后不会将更改应用到视图中。
$scope在异步调用第三方API后不会将更改应用到视图中。
我正在对语音识别API进行异步调用,尝试将结果存储在一个$scope变量中,但是视图没有改变,尽管结果在console.log
中显示正常。我尝试使用$scope.$apply()
和$scope.applyAsync();
如这些帖子中所建议的 - 这个和这个,但不幸的是没有效果
以下是控制器的代码:
myApp.controller('audiotest', function($scope) { $scope.recognize = function(){ speech.main('test.wav', function(err, res){ $scope.myResult = res.results[0].alternatives[0].transcript; console.log($scope.myResult); // <- 这个日志正确 $scope.$applyAsync(); // 也尝试过$scope.$apply(); }); }; };
我认为标记不重要,但是这里是它:
结果是{{myResult}}
提前感谢您的任何意见或想法。
不确定,但是尝试在声明recognize函数之前在scope上初始化myResult。
$scope.myResult = '';
$scope.recognize = function() {
myService.getRecognitionResult().then(function(response) {
$scope.myResult = response.data;
});
};
console.log($scope.myResult); // 输出空字符串
$scope.recognize();
console.log($scope.myResult); // 输出空字符串
解决方法:在异步调用之前将myResult初始化为空字符串。