我有一個selectOptions ajax爲基礎的asincronous加載器;它接受遠程地址,並返回可觀察到的陣列,正確地填充了描述和鍵值被接受以下結合Asyncronous knockout observableArray選擇選項加載
<select data-bind="value: selectedVal, options: opts, optionsText: 'desc', optionsValue:'key', optionsCaption: ''"/></div>
事實是,作爲asincronous,當我觸發選擇選項改變的基礎上,一些用戶行動,我把它分配給我的模型observable數組,我沒有得到選擇popuated,但仍然是空的。
mymodel.opts = loadOptions("<remoteaddress>");
我知道,當第二行被稱爲前面回答是還沒到,但返回的值是一個observableArray,所以它應該正確填充時,具有被分配到與UI綁定可觀察到的陣列響應。
如果我從ajax調用中返回的對象(當它返回時)從Firefox中的console.log中獲取它,或者如果我將可觀察數組opts傳入loadOptions並將其更改爲在其內部構建opts ,那麼它的工作原理,但我真的需要按原樣使用loadOptions,asincronous。我也嘗試追加mymodel.opts.valueHasMutated(),但是ko不能使用newlly到達的observableArray。
如果可能會保留選項加載器,並且如果可能的話,不使用自定義綁定,我可以使用傳入的可觀察數組進行綁定嗎?
無法更改它。但即使我可以,如果它返回一個非可觀察對象,它將在異步調用時爲空,所以我不會加載任何選項。它與分配mymodel.opts(loadOptions(「」)());相同。它不填充選項,即使ajax稍後正確返回對象 –
Nillus
2014-09-22 16:18:09
啊我想我會看到 - 它返回的observableArray會在以後更新嗎?在代碼中你有'model.opts = loadOptions ...'的地方,是否在applyBindings被調用之前? – 2014-09-22 16:23:56
如果是這樣的話,我認爲你需要展示'loadOptions'本身在做什麼 - 我認爲這個問題可能存在於 – 2014-09-22 16:25:24