KnockoutJS关联数组和选择列表

时间:2015-04-21 22:33:58

标签: javascript html knockout.js

我目前有一个数字框,用户可以在其中输入数字1,2或3,并且基于此,有一些条件格式。

但是,我希望数字字段改为下拉列表,显示类似"短","长"和"非常长",但是在幕后,传递的真实值是0,1或2.使用它只显示数字很容易,但是,我很难弄清楚如何配对0和#34; Short& #34;等等。

这是一个小提琴,在事情开始破坏之前我能够走多远:http://jsfiddle.net/Lxh8e9qv/7/。作为旁注,我也似乎无法获得当前长度值来填充下拉列表。

代码中的重要区域是:

HTML

<select  data-bind='options: lengthTypes, value: length' />

的JavaScript

var Furniture = function (data) {
   var self = this;
   self.name = ko.observable('');
   self.size = ko.observable('');
   self.length = ko.observable();
   self.lengthTypes = ko.observableArray([0,1,2]);

再次,我想要做的是有一个带有人类可读选项的下拉列表,但在后端传递索引号(0,1,2)。非常感谢。

我知道官方的KnockoutJS documentation,但他们的解决方案似乎是创建了填充lengthTypes数组的对象,这似乎对我想要的东西来说太重了。

1 个答案:

答案 0 :(得分:1)

您可以使用 optionsText optionsValue 绑定,但您需要将lengthType更改为observableArray,每个索引都有对象。

例如 - JSFiddle if you're interested

<强> HTML

<select  data-bind="options: lengthTypes,optionsText:'label',optionsValue:'value', value: length" />

<强>的JavaScript

var Furniture = function (data) {
   var self = this;
   self.name = ko.observable('');
   self.size = ko.observable('');
   self.length = ko.observable();
   self.lengthTypes = ko.observableArray([{label: 'Short', value: 0 },{label: 'Long', value: 1 },{label: 'Very Long', value: 2 }]);
}

http://knockoutjs.com/documentation/options-binding.html