Javascript Angular ng click:$scope变量更改后跟promise可防止范围更新

Javascript Angular ng click:$scope变量更改后跟promise可防止范围更新,javascript,html,angularjs,ionic,angular-promise,Javascript,Html,Angularjs,Ionic,Angular Promise,我有一个ng click函数,可以更改按钮文本并运行异步函数 模板 <button ng-click="connect()">{{buttonTextConnect}}</button> 此时会立即显示控制台.log。但是,$scope.buttonextconnect不会更新按钮中的文本 thermProbe.connect()是一个角度承诺 如果我注释掉异步调用thermProbe.connect(),按钮文本将按预期更新 这是一个工作模式,它按预期工作。单击按钮时

我有一个
ng click
函数,可以更改按钮文本并运行异步函数

模板

<button ng-click="connect()">{{buttonTextConnect}}</button>
此时会立即显示
控制台.log
。但是,
$scope.buttonextconnect
不会更新按钮中的文本

thermProbe.connect()
是一个角度承诺

如果我注释掉异步调用
thermProbe.connect()
,按钮文本将按预期更新

这是一个工作模式,它按预期工作。单击按钮时,按钮文本将发生更改,承诺将在稍后解析


为什么异步调用会阻止
$scope
更改在模板中更新

thermProbe.connect()的功能是什么?通过Cordova插件连接到蓝牙设备
thermProbe.connect()
返回一个承诺。@BrettDeWoody您可能需要通过执行
$scope.$apply()
来应用摘要循环,因为它似乎超出了angular Context您是说我应该在异步调用之前运行
$scope.$apply()
?似乎
connect()
函数在运行
$digest
之前正在等待完成(使用来自承诺的解析)。它是否返回角度承诺?如果不是,那么@PankajParkar编写的就是正确的解决方案。除非这是您的代码,在这种情况下,您应该使用$q服务。
$scope.connect = function() {
    console.log('Try connecting');
    $scope.buttonTextConnect = 'Connecting...';

    thermProbe.connect().then(
        function() {
            $scope.connected = true;
        },
        function() {
            $scope.connected = false;
        }
      );
}