我有以下js代码
$(document).ready(function () {
var viewModel = {
predefinedGrades: [
ko.observable("Excellent"),
ko.observable("Good"),
ko.observable("OK"),
ko.observable("Average"),
ko.observable("Bad")],
observable: ko.observable("good")
};
ko.applyBindings(viewModel);
});
以下是我的观点
<div data-bind="foreach: predefinedGrades">
<input type="text" data-bind="value: $data, valueUpdate: 'keyup'"/>
</div>
<input type="text" data-bind="value: observable, valueUpdate: 'keyup'"/>
问题是当我更新foreach
绑定输入中的文本时,底层数组不会改变。但是,如果我使用绑定observable
的最后一个文本输入更改文本,则可以在keyup事件之后更改observable字段。怎么会这样?我错过了什么?
答案 0 :(得分:1)
如果您在$rawData
绑定中使用$data
而不是foreach
,它将按预期工作。
$ RAWDATA
这是当前上下文中的原始视图模型值。通常这个 将与$ data相同,但如果视图模型提供给Knockout 包含在一个可观察的数据中,$ data将是未包装的视图模型, 和$ rawData本身就是可观察的。