$scope在异步调用第三方API后不会将更改应用到视图中。

14 浏览
0 Comments

$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}} 

提前感谢您的任何意见或想法。

0
0 Comments

不确定,但是尝试在声明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初始化为空字符串。

0