有没有一种简单的方法来绑定一个div的文本框,使其根据在同一页上选中的下拉列表选项的文本值而改变?
<div data-bind="text: dropdownValue"></div>
<select>
<option value="1">Value1</option>
<option value="2">Value2</option>
</select>
请注意,我不想使用JavaScript将值放入选择元素中。我想直接从HTML绑定值。我也可以包含jQuery使其工作。有没有一种简单的方法来绑定一个div的文本框,使其根据在同一页上选中的下拉列表选项的文本值而改变?
<div data-bind="text: dropdownValue"></div>
<select>
<option value="1">Value1</option>
<option value="2">Value2</option>
</select>
请注意,我不想使用JavaScript将值放入选择元素中。我想直接从HTML绑定值。我也可以包含jQuery使其工作。昨天我正在编写一些内容时,想要实现类似的功能,但无法找到相关解决方法,因此最终只能更改value属性中所存储的内容。有时候这是最简单的解决方案。
以下是使用jQuery解决该问题的一个快速而且不太美观的示例:
<div data-bind="text: dropdownText"></div>
<select data-bind="value: dropdownValue" id="dropdown">
<option value="1">Value1</option>
<option value="2">Value2</option>
</select>
function ViewModel() {
var self = this;
this.dropdownValue = ko.observable();
this.dropdownText = ko.computed(function() {
return $("#dropdown option[value='" + self.dropdownValue() + "']").text();
});
};
ko.applyBindings(new ViewModel());
演示例子: http://jsfiddle.net/5PkBF/
如果你想在多个地方这样做,最好编写一个自定义绑定,例如:
<div data-bind="text: dropdownValue"></div>
<select data-bind="selectedText: dropdownValue">
<option value="1">Value1</option>
<option value="2">Value2</option>
</select>
ko.bindingHandlers.selectedText = {
init: function(element, valueAccessor) {
var value = valueAccessor();
value($("option:selected", element).text());
$(element).change(function() {
value($("option:selected", this).text());
});
},
update: function(element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
$("option", element).filter(function(i, el) { return $(el).text() === value; }).prop("selected", "selected");
}
};
function ViewModel() {
this.dropdownValue = ko.observable();
};
ko.applyBindings(new ViewModel());
这是我如何实现类似功能的方法。我在我的模型中定义了一个名为“dropDownValue”的可观察对象,同时还有一个名为“dropDownValues”的可观察对象数组。我的HTML代码大致如下:
<span data-bind="text: dropDownValue"></span>
<select data-bind="options: dropDownValues, optionsValue: 'FieldText', optionsText: 'FieldText', value: dropDownValue"></select>
function(index, el)
。 - fearofawhackplanet