1

这是小提琴:

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());

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

可能是一些琐碎和愚蠢的事情,但我似乎无法弄清楚......任何帮助表示赞赏。

4

1 回答 1

1

您的问题可能与此重复:选择元素的初始值

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

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

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

于 2013-11-01T16:00:28.253 回答