我正在使用knockout创建一个选择列表。每个选择项都是一个包含几个变量的对象。选择项目时,我想在span
中显示所选对象中的另一个变量。
选择有效但在包含data1:
文本的范围内不显示任何数据。
有什么想法吗?
在这里小提琴:http://jsfiddle.net/e24zoyp6/
代码: JS
var _ViewModel = {};
$(document).ready(function () {
setupView();
});
function setupView() {
var Month = function (longName, shortName, value) {
this.ShortName = shortName;
this.MonthName = longName;
this.MonthNumber = value;
};
_ViewModel = {
// These are the initial options
monthSelection: ko.observableArray([
new Month("January", "Jan", 1),
new Month("February", "Feb", 2),
new Month("March", "Mar", 3)
]),
SelectedMonth: ko.observable()
};
ko.applyBindings(_ViewModel);
}
HTML
<select data-bind="
options: monthSelection,
optionsText: 'MonthName',
optionsValue: 'MonthNumber',
value: SelectedMonth,
optionsCaption: 'Which Month?'">
</select>
<div data-bind="visible: SelectedMonth"> data1:
<span data-bind="text: SelectedMonth() ? SelectedMonth().ShortName : 'unknown'"></span>
</div>
答案 0 :(得分:2)
您目前正在使用MonthNumber
作为optionsValue
。这意味着您的SelectedMonth
将只包含月份编号,而不是整个Month
对象,这就是您的text
绑定不起作用的原因。
要修复它,只需删除optionsValue: 'MonthNumber',
,当您更改选择时,KO将使用整个对象:
<select data-bind="
options: monthSelection,
optionsText: 'MonthName',
value: SelectedMonth,
optionsCaption: 'Which Month?'">
</select>
演示JSFiddle。