gpt4 book ai didi

javascript - KnockoutJS 选项绑定(bind),无法在父上下文中设置值

转载 作者:行者123 更新时间:2023-11-30 10:25:56 25 4
gpt4 key购买 nike

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

一切看起来都很好,但是当我切换选项时,可观察对象没有更新。

JSFiddle here

问题是:如何使用选项选定值从外部上下文更新可观察对象?

最佳答案

当绑定(bind)一个select元素时,你必须使用options方向,而不是foreach:

<select data-bind="options: theOptions,
optionsText: 'name',
optionsValue: 'id',
value: watchThis().something">
</select>

参见 Documentation .

关于javascript - KnockoutJS 选项绑定(bind),无法在父上下文中设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19566944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com