我正在使用angular 1.4.12,並且我需要我的應用程序中的選擇菜單。 我使用ng-options與從異步函數填充的對象數組,但SELECT沒有看到更新,之後仍然是空的。我試着用「追蹤」,但它不起作用。 有什麼建議嗎?謝謝!當ng選項模型更新時,ng ng選項不會更新選擇列表
回答
一對夫婦的問題在這裏
首先,在NG選項的選擇是有點複雜得多,一個簡單的綁定。
其次,嘗試避免在使用angular進行開發時使用setTimeout。由於稱爲摘要循環的過程,角綁定知道要更新。在此過程中,會評估綁定並檢查更改。這個過程由角度內部觸發,並且發生了很多。
然而問題在於setTimeout,因爲它不是角度的一部分,不會觸發摘要。所以你的選項框上的綁定永遠不會更新。爲了解決這個問題,angular提供了自己的超時助手。 $超時。
請參閱更新的fiddle以獲得工作解決方案。
ng選項需要更新到這樣的東西。你可以閱讀更多關於NG選項here
<select ng-options="item.subItem.label for item in items" ng-model="model">
</select>
和你的控制器需要注入$超時以上
function MyCtrl($scope, $timeout) {
$scope.name = 'Try';
$scope.items = [];
$scope.model = {};
$timeout(function() {
$scope.items = [
{subItem: {value: "a", label: "1"}},
{subItem: {value: "b", label: "2"}},
];
alert($scope.items.length);
}, 2000);
}
UPDATE提到的原因: 由於在下面的評論中提到,使用外部庫它自己的異步操作可能會導致附帶的角度摘要問題。一個簡單的解決方案是使用angulars諾言庫$ q。我已經更新了提琴手以包含這個例子。 Click here to see it
更新的代碼如下
function MyCtrl($scope, $q, $timeout) {
$scope.name = 'Try';
$scope.items = [];
$scope.model = {};
function myPromise(){
var deferred = $q.defer();
//Do your pouchDB request here and then call resolve in the pouchDB callback
$timeout(() => {
deferred.resolve("This would be your results object");
}, 2000)
return deferred.promise;
}
myPromise().then((results) => {
$scope.items = [
{subItem: {value: "a", label: "1"}},
{subItem: {value: "b", label: "2"}},
];
alert(results);
});
}
我不使用setTimeout在我的代碼中,我使用PouchDB,但在ng對象中需要的數據以異步的方式回溯,所以我在小提琴中使用了setTimeout。在PouchDB查詢之後,我試圖在回調Pouch承諾時調用$ rootScope。$ apply(),但它不起作用 –
請參閱上面的編輯。基本上使用承諾應該能夠幫助你 –
謝謝,我現在試試 –
- 1. 在ng選項中選擇不更新
- 2. ng選項不更新選擇標籤
- 3. 選擇ng選項組名稱不會更新|動態ng選項組
- 4. ng選項和更新模型
- 5. 加載ng-options前更新模型時的選擇選項
- 6. 如何在Angularjs中使用ng選項時更新ng模型?
- 7. NG-模型選擇下拉更新 - 角
- 8. 選擇選項不綁定ng模型
- 9. ng-class不更新,而ng-if,當選項卡離焦
- 10. 使用ng選項的ng-ng模型
- 11. LumX LX-選擇不更新NG-模式
- 12. AngularJs NG選項(柯值)NG-模型= 「選擇」 不工作
- 13. 角NG-模型NG-選擇
- 14. 當選擇選項更改時,Knockoutjs模型不會更新
- 15. 在選擇選項的Ng模型
- 16. 在選擇ng選項時更新控制器變量
- 17. 更新選項時,使用ng-repeat的角度選擇丟失選定選項
- 18. NG-模式不更新時選擇下拉更新
- 19. NG-模型未能從NG選項
- 20. NG-模型數據沒有爲選擇NG選項結合
- 21. 角度不會使用ng模型更新選擇元素
- 22. ng選項中的更多選項
- 23. AngularJS - NG選項選擇值
- 24. AngularJS選擇ng選項
- 25. 過濾NG-選項選擇
- 26. 當ng-model輸入更新時ng-repeat不會更新
- 27. 在選擇下拉列表中使用ng選項ng-show
- 28. AngularJS,ng-change如何更新其他選擇控件的選項
- 29. NG-模式不更新所選值
- 30. 當空選擇選項被刪除時,ng-change不會觸發
你可能不得不分享一些代碼。如果你可以在jsFiddle中複製這個問題,那麼這將更好 –
http://jsfiddle.net/halirgb/Lvc0u55v/有jsFiddle,問題是隻有當ng-options數組在開始時爲空 –
你確定那是正確的小提琴?它沒有任何使用ng-option –