【发布时间】:2016-06-21 06:02:07
【问题描述】:
我才开始使用 Knockout,但我已经体验过 MVVM 在 WPF 中的应用。我遇到的问题是包装模型对象的 Knockout 视图模型不会更新原始模型。这是一个小例子:
HTML
<select name="size" id="sel-size" data-bind="options: sizes, value: size"></select>
JS
// default settings
var settings = {
size: 5
};
// settings view model
var settingsVM = function () {
return {
sizes: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
size: ko.observable(settings.size)
}
}();
// subscribe to changes
settingsVM.size.subscribe(function() {
alert("Model: " + settings.size + " / VM: " + settingsVM.size());
})
ko.applyBindings(settingsVM);
更改下拉选择时,仅更新视图模型中的settingsVM.size(),但模型中的settings.size 保持不变。
似乎用引用初始化observable 并没有将该引用作为属性访问器的支持字段。我对 MVVM 淘汰赛的方式缺少什么?
【问题讨论】:
标签: javascript mvvm knockout.js