异步淘汰observableArray选择加载选项
Asyncronous knockout observableArray select options loading
我有一个基于selectOptions ajax的异步加载程序;它接受远程地址并返回一个可观察的数组,该数组正确地填充了要被以下绑定接受的描述和键值
<select data-bind="value: selectedVal, options: opts, optionsText: 'desc', optionsValue:'key', optionsCaption: ''"/></div>
事实是,愚蠢的是,当我根据一些用户操作触发选择选项更改时,我会将其分配给我的模型可观察数组,我不会弹出选择,但保持为空。
mymodel.opts = loadOptions("<remoteaddress>");
我知道当第二行被调用时,anwer还没有到达,但返回的值是observableArray,所以无论何时填充,它都应该正确响应,因为它被分配给了与ui绑定的observable数组。
如果我从Firefox中的console.log中获取ajax调用返回的对象(当它返回时),或者如果我将可观察数组opts传递到loadOptions中,并对其进行更改以在其中构建opts,那么它就可以工作了,但我真的需要按原样使用loadOptions,愚蠢。我还尝试附加mymodel.opts.valueHasMutted(),但ko无法使用新到达的observableArray。
如果可能的话,保持选项加载程序不变,如果可能,不使用自定义绑定,我可以在准备好时使用传入的可观察数组进行绑定吗?
您遇到的问题是,当这行运行时:
mymodel.opts = loadOptions("<remoteaddress>");
它用不同的observableArray
替换整个可观察阵列,而不是更新当前阵列。您需要更新现有的数组-您可以更改loadOptions
以返回正常数组,而不是可观察的数组吗?然后你可以做:
//clear any existing entries
mymodel.opts.removeAll();
//push the new entries in
mymodel.opts.push.apply(mymodel.opts, loadOptions("<remoteaddress>"));
相关文章:
- 过滤”;溢价;页面加载选项使用混合
- Jquery-从不同链接加载选项卡
- 如何选择页面加载选项
- Rally App SDK 2.0:rallymultiobjectpicker无法加载选项文本
- 如何在加载选项卡内容时显示加载图像
- 单击图像时从数据库加载选项id
- 如何在页面加载时自动加载选项卡内容(外部链接)
- 根据上一个选项卡的选择器重新加载选项卡
- 如何在 ui-sref 标记中放置重新加载选项
- j查询更改下拉列表调用 Web 服务以加载选项
- 在 HTML 模板的变量中使用 jQuery 查找选择以加载选项
- 使用 Ajax 调用加载选项卡内容
- 如何在重新加载选项(浏览器)时限制页面加载
- jquery ui ajax选项卡-重新加载选项卡,或更改选项卡位置
- 页面加载准备就绪时加载选项卡中的内容
- 单击“加载选项卡内容”
- 从服务器中选择加载选项
- 更改从存储加载选项的下拉dojo的字体大小
- 异步淘汰observableArray选择加载选项
- Chrome扩展:如何使用键盘事件从任何地方重新加载选项卡