我可以轻松更新所有值,但如果我只想更新一个目标值,则会清除其他值。
在我的代码段中,您可以取消注释下面的行以查看我的问题。
self.mainform({"AdultCount" : "test"});
在设置嵌入式代码片段时,我发现它返回了一个脚本错误,但我不确定为什么会发生这种情况。
请指出我的方法中哪些不正确?
var ViewModel = function() {
var self = this;
self.mainform = ko.observable(new FormModel());
//self.mainform({"AdultCount" : "test"});
};
var FormModel = function() {
var self = this;
self.AdultCount = ko.observable("2");
self.PG1FName = ko.observable("PG1FName");
self.PG1LName = ko.observable("PG1LName");
}
ko.applyBindings(new ViewModel());

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<form data-bind ="with: mainform">
<input data-bind = "value: AdultCount">
<input data-bind = "value: PG1FName">
<input data-bind = "value: PG1LName">
</form>
&#13;
答案 0 :(得分:1)
您使用新对象覆盖整个FormModel,并且新对象没有其他两个字段,因此它们将为空白,并且还会抛出脚本错误,因为淘汰可以&#39 ; t绑定到不存在的东西。
要更改FormModel中单个属性的值,您需要访问该属性。你可能想要这样的东西:
//self.mainform({"AdultCount" : "test"});
self.mainform().AdultCount("test");
var ViewModel = function() {
var self = this;
self.mainform = ko.observable(new FormModel());
self.mainform().AdultCount("test");
};
var FormModel = function() {
var self = this;
self.AdultCount = ko.observable("2");
self.PG1FName = ko.observable("PG1FName");
self.PG1LName = ko.observable("PG1LName");
}
ko.applyBindings(new ViewModel());
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<form data-bind ="with: mainform">
<input data-bind = "value: AdultCount">
<input data-bind = "value: PG1FName">
<input data-bind = "value: PG1LName">
</form>
&#13;