【发布时间】:2014-11-16 16:11:54
【问题描述】:
我有一个 selectOptions 基于 ajax 的 asincronous 加载器;它接受远程地址并返回一个可观察数组,正确填充描述和键值,以供以下绑定接受
<select data-bind="value: selectedVal, options: opts, optionsText: 'desc', optionsValue:'key', optionsCaption: ''"/></div>
事实是,当我触发一个选择选项更改时,基于一些用户操作,我将其分配给我的模型可观察数组,我没有得到填充,而是保持为空。
mymodel.opts = loadOptions("<remoteaddress>");
我知道当调用第二行时 anwer 还没有到达,但返回的值是一个 observableArray,所以它应该在填充时正确响应,已分配给与 ui 绑定的 observable 数组。
如果我硬编码从 ajax 调用(返回时)返回的对象,从 Firefox 中的 console.log 获取它,或者如果我将 observable 数组 opts 传递到 loadOptions,并更改它以在其中构建 opts,然后它可以工作,但我真的需要按原样使用 loadOptions,asincronous。我也尝试附加 mymodel.opts.valueHasMutated(),但 ko 无法使用新到达的 observableArray。
如果可能保持选项加载器不变,并且如果可能不使用自定义绑定,我可以使用传入的 observable 数组在它准备好时进行绑定吗?
【问题讨论】:
标签: javascript ajax knockout.js ko.observablearray html-select