【发布时间】:2012-12-02 06:20:23
【问题描述】:
我有如下的 javascript 代码块和 html。模型对象是通用的。 它是在运行时定义的。
可能是这样的。
var model = { "xId": ko.observable(0), "xName": ko.observable(null), "Type": ko.observable("x") };
/* var model = { "yId": ko.observable(0), "yName": ko.observable(null), "Type": ko.observable("y") };
var model = { "zId": ko.observable(0), "zName": ko.observable(null), "Type": ko.observable("z") }; */
var vm = function (data) {
ko.mapping.fromJS(data, {}, this);
};
var vm2 = function () {
var self = this;
self.New = ko.observable(null);
self.NewItem = function () {
console.log(model);
self.New(new vm(model));
};
};
var viewModel = new vm2();
ko.applyBindings(viewModel);
vm.prototype.Save = function () {
viewModel.New(null);
/*In here all of inputs must be cleared but How to :)*/
};
第一个模型的 newForm。
<input type="button" data-bind="click: NewItem" value="Add" />
<div data-bind="with:New" id="newForm">
<input type="text" data-bind="value:xId" />
<input type="text" data-bind="value:xName" />
<input type="text" data-bind="value:Type" />
<input type="button" data-bind="click: Save" value="Save" />
</div>
我单击添加按钮,然后将某些内容输入到输入中,然后单击保存按钮。 newForm 是不可见的。到目前为止一切正常。但是我再次点击添加按钮,我已经写好的值还在输入中。保存后我无法清除 newForm。
编辑:
public class Test{
public int TestId {get; set;}
public int TestName {get; set;}
}
public class Test2{
public int Test2Id {get; set;}
public int Test2Name {get; set;}
}
实体类的数量不清楚。
我的实体类是转换为 json。该模型是由 .net 像这样创建的。 我的项目有一个母版页和子页。 测试页面:
var model = <%=ViewModelCreator.Create<Test>() %>;
对于 test2 页面:
var model = <%=ViewModelCreator.Create<Test2>() %>;
【问题讨论】:
-
var model = () %>;这会创建上面的确切代码吗?因为那是你的问题,ko.mapping 将使用相同的 observable,这就是为什么 teh 值不会恢复为默认值
标签: knockout.js knockout-mapping-plugin