0

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

1 に答える 1

1

バインディングは、プロパティへの参照を文字列ではなくパラメーターとして受け取ります (したがって、またはvalueのようなプロパティ名ではありません)。optionsValueoptionsValue

したがって、正しい使用法は次のとおりです。

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

JSFiddle のデモ。

于 2013-05-02T16:30:03.717 に答える