KnockoutJS选择Dropdown不预先填充选定的值

时间:2013-11-01 15:45:29

标签: knockout.js

这是小提琴:

http://jsfiddle.net/adNuR/2187/

// Template
<div  data-bind="foreach: lines">
     <p data-bind="text: item.description"></p>
     <select data-bind="value: item, options: sampleOptions, optionsText: 'description', optionsCaption: 'Please select'"></select>
</div>


// JS
var sampleOptions = [
        { description: "item 1" },
        { description: "item 2" },
        { description: "item 3" },
        { description: "item 4" }
        ];    

var Model = function() {
    var self = this;
    self.lines = ko.observableArray([
        { item: { description: "item 1" } },
        { item: { description: "item 2" } }
    ]);
};

ko.applyBindings(new Model());

基本上我有一个绑定到选择框的对象,但它没有在下拉列表中选择所选的选项。如果我将所选选项的文本数据绑定到另一个元素,它将显示正确的值,但无论我尝试什么,我似乎都无法使用初始预选值加载选择框。

可能是一些琐碎而愚蠢的东西,但我似乎无法弄明白......任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您的问题可能与此重复:Select element's initial value

所以基本上你需要比较两个文字来看看最初应该在下拉列表中设置哪个值。看起来它不适用于整个对象。对你的例子进行快速修复就是这个(更新的小提琴:http://jsfiddle.net/adNuR/2189/):

 <select data-bind="value:item.description, options: sampleOptions, optionsValue:'description', optionsText: 'description', optionsCaption: 'Please select'"></select>

但您可能希望在选项中添加一些适当的ID并根据这些选项进行比较。