<select data-bind='foreach: theOptions'>
<option data-bind='text: name, value: $root.watchThis().something'></option>
</select>
You have selected <p data-bind="text: watchThis().something"></p>
Json model.
<p data-bind="text: ko.toJSON(watchThis)"></p>
オプションが表示されていますが、値を変更すると、相対オブザーバブルは更新されません。より多くのコード:
function FooModel() {
this.something = ko.observable();
}
function VM() {
var self = this;
self.watchThis = ko.observable(new FooModel());
self.theOptions = ko.observableArray();
self.theOptions([
{id:1, name: 'foo'},
{id:2, name: 'bar'},
{id:3, name: 'baz'}
]);
}
ko.applyBindings(new VM());
私も試しました
<option data-bind='text: name, value: $root.watchThis().something'></option>
<option data-bind='text: name, value: $root.watchThis.something'></option>
<option data-bind='text: name, value: $parent.watchThis().something'></option>
このように値を明示的に初期化すると、最悪のようです
function FooModel() {
this.something = ko.observable(2);
}
すべて問題ないように見えますが、オプションを切り替えると、オブザーバブルが更新されません。
質問: オプションで選択された値を使用して、外部コンテキストからオブザーバブルを更新する方法は?