使用 KnockoutJS,如何将数据绑定到来自同一视图模型的 2 个不同的<选择>标签
Using KnockoutJS, how to bind data to 2 different <select> tags from the same view model
我的视图上有 2 个选择标签.html像这样
<select id="first" data-bind="options: firstDropdownOptions, optionsText: 'title', value: value"></select>
<select id="second" data-bind="options: secondDropdownOptions, optionsText: 'title', value: value"></select>
在我的视图中是这样的东西模型.js
var firstDropdownOptions = ko.observableArray([
{ value: -1, title: 'Select Type' },
{ value: 111, title: 'Option 1' },
{ value: 222, title: 'Option 2' },
{ value: 333, title: 'Option 3' }
]);
var secondDropdownOptions = ko.observableArray([
{ value: -1, title: 'Select Type' },
{ value: 1, title: 'Option New 1' },
{ value: 2, title: 'Option New 2' },
{ value: 3, title: 'Option New 3' }
]);
我无法将数据绑定到我的<select>
标签。只有第一个<select>
标签才能正常工作。另外,如果我将 #second <select>
标签移到 #first <select>
之前,则 #second 显示正确的数据,但不显示 #first <select>
。
如何将数据绑定到我的<select>
标签?
在两个绑定中,您都使用 value: value
.这意味着两个select
元素的值都绑定到同一个模型属性,称为 value
。您正在对不同的对象使用不同的数组,因此单个值无法正常运行。尝试使用两个不同的属性来存储值,例如:
var vm = {
firstDropdownOptions: ko.observableArray([
{ value: -1, title: 'Select Type' },
{ value: 111, title: 'Option 1' },
{ value: 222, title: 'Option 2' },
{ value: 333, title: 'Option 3' }
]),
secondDropdownOptions: ko.observableArray([
{ value: -1, title: 'Select Type' },
{ value: 1, title: 'Option New 1' },
{ value: 2, title: 'Option New 2' },
{ value: 3, title: 'Option New 3' }
]),
// property for storing selected value of firstDropdownOptions:
selectedFirstOptionValue: ko.observable(''),
// property for storing selected value of secondDropdownOptions:
selectedSecondOptionValue: ko.observable('')
};
ko.applyBindings(vm);
在 HTML 绑定属性中,分别selectedFirstOptionValue
和selectedSecondOptionValue
(属性将包含数组中的对象(:
<select id="first" data-bind="options: firstDropdownOptions, optionsText: 'title', value: selectedFirstOptionValue"></select>
<select id="second" data-bind="options: secondDropdownOptions, optionsText: 'title', value: selectedSecondOptionValue"></select>
这是一个工作的小提琴
作为dotnetom答案的替代方案,这对我也有用。
我没有使用不同的属性在我的视图模型中存储选定的值.js,而是在视图中使用了firstDropdownOptions().value
和firstDropdownOptions().value
.html而是使用
查看.html
<select data-bind="options: firstDropdownOptions, optionsText: 'title', value: firstDropdownOptions().value"></select>
<select data-bind="options: secondDropdownOptions, optionsText: 'title', value: secondDropdownOptions().value"></select>
视图模型.js
var vm = {
firstDropdownOptions: ko.observableArray([
{ value: -1, title: 'Select Type' },
{ value: 111, title: 'Option 1' },
{ value: 222, title: 'Option 2' },
{ value: 333, title: 'Option 3' }
]),
secondDropdownOptions: ko.observableArray([
{ value: -1, title: 'Select Type' },
{ value: 1, title: 'Option New 1' },
{ value: 2, title: 'Option New 2' },
{ value: 3, title: 'Option New 3' }
])
};
ko.applyBindings(vm);
这是小提琴。
相关文章:
- <选择>标签不起作用
- 有没有一种方法可以从两个标签之间提取文本,并以我选择的格式输出
- Grails-设置g:点击img标签选择值
- 如何在 javascript 中为没有值的标签选择属性
- 通过标签选择过滤平行网格
- Rally SDK 2 标签选择器是否有必填字段?对象没有方法'getContextPath'
- Dojo 1.6 - 设置 Dijit.选择按标签选择
- 花哨的jQuery标签选择器
- Twitter Bootstrap Dropdown与标签选择器
- 量角器:使用标签选择形状元素
- 根据标签选择id
- 使用标签选择图像文件,但有属性显示输入
- 如何在jQuery中获取数据- PHP中的多重标签选择
- Jquery -通过标签选择我想要使用的效果
- 如何使用一个标签选择多个具有不同名称的单选按钮
- jQuery在更新元素上的数据标签后使用数据标签选择器
- 复选框图像标签选择效果只适用于悬停,而不是当选中
- 标签选择器不以动态形式出现
- Jquery optgroup根据标签选择
- JavaScript ID标签选择