1
我在控制器內部有一些操作。它包含一個Promise對象,在解析時應該通過controllerAs綁定來更新視圖。問題是已解決的值是正確的(記錄在控制檯中),但將其分配給控制器不會更新視圖。它只會在包含該承諾的操作再次執行時更新。所以,如果我通過按下一個按鈕來繼續執行它,則更新會延遲一次執行。AngularJS在解決承諾時延遲了視圖更新
我正在使用AngularJS 1.6.5。我沒有使用$ q。沒有$範圍,所以沒有$請適用。
我與2名成員簡化控制器的行爲比較具有和沒有承諾:
var vm = this;
vm.textSync = 0;
vm.textAsync = 0;
vm.onclick = function()
{
var action = new Promise(function(resolve, reject)
{
resolve(vm.textAsync + 1);
});
action.then(function(result)
{
console.log(result);
vm.textAsync = result;
});
vm.textSync++;
};
記錄的值等於遞增textSync(1,2,3,...),但textAsync在視圖中等於(textSync-1)在eack點擊之後(因此它是0,1,2,...)。爲什麼是這樣以及如何解決它?
我的簡化圖:
<input type="button" value="Click me" ng-click="$ctrl.onclick()" />
<input ng-model="$ctrl.textSync" />
<input ng-model="$ctrl.textAsync" />