在knockout中使用顺序选项值填充下拉列表,不使用jQuery
Populate a dropdown in knockout with sequential option values without jQuery
我正在尝试使用knockout填充下拉列表。我用来填充optionsText的数组是一个JSON对象数组。我需要optionsValue是数组中对象的索引或一个序号。
我有以下代码在我的viewModel:
self.job.submitOptionsArray = this.collection.toJSON();
this.job.applyPreset = ko.observableArray(self.job.submitOptionsArray);
在我看来:
<select name="" id="applyPreset" data-bind="options: applyPreset, optionsText: 'name', optionsValue: '???', value: somfn"></select>
我需要一个不使用jQuery的解决方案
您可以格式化您的对象,以便根据您的集合有一个索引。您可以使用手动订阅在数组更改时执行一次或每次操作。
this.job.applyPreset = ko.observableArray(self.job.submitOptionsArray);
this.job.applyPreset.subscribe(function(arrayValue) {
var index = 0;
ko.utils.arrayForEach(arrayValue, function(arrayItem){
arrayItem.index = index++;
})
})
使用index
作为您的optionsValue
,您将设置
比起使用选项绑定,您可能会发现在您的情况下使用foreach绑定手动创建选项更有益。
例如:
<select data-bind="value: someValue, foreach: options">
<option data-bind="text: title, attr: {value: $index()}"></option>
</select>
<div data-bind="text: someValue"></div>
你的选项可以是任何东西,我刚刚测试了它:
self.options = ko.observableArray([{
title: "Some text",
otherData: "someOtherData",
evenMore: "even more Data"
}, {
title: "Some text 2",
otherData: "someOtherData",
evenMore: "even more Data"
}, {
title: "Some text 2",
otherData: "someOtherData",
evenMore: "even more Data"
}]);
如果想包含标题,只需将foreach绑定移动到虚拟元素中,并在其余元素上方手动添加一个选项。
您必须自己修复,optionsValue只能指向对象上的成员。如果不提供optionsValue,则该值将是对象本身。
如果对象有id成员,使用它,或者使用带有write方法的计算可观察对象,将实际索引写入,而不是将对象写入底层可观察对象。
相关文章:
- 如何使用jQuery选择下拉列表的值
- jQuery表单添加不适用于下拉列表
- 禁用jQuery中的下拉列表
- 如何使用jquery从下拉列表(javascript)中选择192.168.3.0进行测试自动化
- Jquery 读取编号组中选择下拉列表的数组
- 如何在 Javascript/jQuery 中获取一些随机下拉列表的选定值
- 使用 jQuery 从下拉列表中获取所选文本
- 通过Jquery根据下拉列表中的选择禁用数字字段
- jQuery下拉列表未显示第一个选项
- jQuery,引导程序下拉列表问题
- 当链接单击-jQuery时,第二层下拉列表将隐藏
- 使用带有jQuery或JavaScript的Play 2框架下拉列表
- 如何使用jquery将所选项目从一个下拉组列表(optgroup)移动到另一个下拉列表(optgroup)
- 如何使用JavaScript/JQuery获取下拉列表的选定值
- 如何处理多选下拉列表 - JQuery.
- 如果未选择第一项,请选择下拉列表 jQuery
- 如何修改代码以将其应用于三个下拉列表?(Jquery)
- 单个列筛选不保存下拉列表 jQuery 的状态
- 默认文本下拉列表jquery
- 将 JavaScript 数组转换为下拉列表 - jQuery