在Knockout选择中设置初始值

时间:2013-05-02 16:27:28

标签: javascript knockout.js

我遇到的问题是将select的初始值设置为等于我的挖空模型中的值。

http://jsfiddle.net/npearson99/bjwAT/2/

在那个小提琴中,该组应该是“第2组”,但它不会选择任何组。

如果我将value: 'SelectedGroupId'更改为value: 2,则可以。

<div data-bind="with: selectedWorkout">
 <h3>Current Workout</h3>
Workout Id:
<label data-bind="text: Id"></label>
<br/>Workout Name:
<label data-bind="text: Name"></label>
<br/>Group:
<select data-bind="options: $root.groupList, 
                          optionsText: 'GroupName',
                          optionsValue: 'Id',
                          optionsCaption: 'No Group',
                          value: 'SelectedGroupId'"></select>

function Group(Id, GroupName) {
    var self = this;

    self.Id = Id;
    self.GroupName = GroupName;
}

function Workout(id, name, selectedGroupId) {
    var self = this;
    self.Id = id;
    self.Name = name
    self.SelectedGroupId = ko.observable(selectedGroupId);
}

function viewModel() {
    var self = this;

    self.groupList = ko.observableArray([
    new Group(1, 'Group One'),
    new Group(2, 'Group Two'),
    new Group(3, 'Group Three')]);

    self.selectedWorkout = ko.observable(new Workout(4, 'Test Workout', 2));
}

ko.applyBindings(new viewModel());

1 个答案:

答案 0 :(得分:1)

value绑定将对属性的引用作为参数而不是字符串(因此不是optionsValueoptionsValue等属性名称)。

所以正确的用法是:

<select data-bind="options: $root.groupList, 
                      optionsText: 'GroupName',
                      optionsValue: 'Id',
                      optionsCaption: 'No Group',
                      value: SelectedGroupId"></select>

演示JSFiddle.