KnockoutJS 选项绑定,无法在父上下文中设置值
KnockoutJS options binding, unable to set value in parent context
<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
问题是:如何使用选项选定值从外部上下文更新可观察量?
绑定 select
元素时,必须使用options
方向,而不是foreach
:
<select data-bind="options: theOptions,
optionsText: 'name',
optionsValue: 'id',
value: watchThis().something">
</select>
请参阅文档。
相关文章:
- 如何设置EmberJS组件的上下文
- 关于设置超时/间隔上下文
- 为什么 context.restore() 不会将上下文的比例设置回 (1, 1)
- 如何在保留当前上下文的同时设置Timeout
- 如何设置javascript闭包的上下文
- JQuery widget:在子 widget 中设置上下文
- 上下文丢失.设置超时
- 为包定义的模板设置数据上下文
- Angular JS:如何为通过$http的所有调用设置上下文路径
- HTML5 画布:如何为上下文设置动画
- JavaScript 设置超时在 Android 上下文切换上
- TinyMCE onPaste 不设置内容,使用上下文菜单粘贴不会触发更改事件
- 如何设置html5画布's上下文属性
- 为所有查询设置jquery上下文
- Backbone.js,无法在回调上设置上下文
- 画布元素的宽度或高度更改后,其 2d 上下文的字体将设置为默认值
- 如何设置变量指向全局对象-独立于上下文执行
- 修改数组.forEach自动将上下文设置为调用者
- NetSuite -在我将上下文设置为'scheduled'之后,销售订单中的字段没有设置
- 将绑定上下文设置为属性