看起来非常简单,但我不知道如何从异步函数访问$ scope。 有了以下内容,我将不会尝试使用$ scope.result,直到我手动重新加载选项卡。
.controller('DashCtrl', function ($scope, Camera) {
$scope.getBarcode = function () {
cordova.plugins.barcodeScanner.scan(function (result) {
$scope.result = result.text;
}, function (error) {
//alert("Scanning failed: " + error);
});
};
}
你能告诉我怎么办吗?
谢谢!
答案 0 :(得分:4)
在这种情况下,您需要手动触发摘要周期,因为cordova.plugins.barcodeScanner.scan
不是Angular方法,因此框架不知道此代码应该更新绑定。在这种情况下,您需要使用$scope.$apply()
:
$scope.getBarcode = function () {
cordova.plugins.barcodeScanner.scan(function (result) {
$scope.result = result.text;
$scope.$apply();
}, function (error) {
//alert("Scanning failed: " + error);
});
};
答案 1 :(得分:1)
您需要将代码包装到$scope.apply
的调用中,因为cordova scan
函数未与angular集成,因此angular不知道需要重新消化范围并更新页面
function (result) {
$scope.apply(function () {
$scope.result = result.text;
});
}