我有javascript代碼塊和html像下面。模型對象是通用的。 它在運行時定義。如何清除knockout中的可觀察屬性?
它可以是這樣的。
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>
我點擊添加按鈕,然後我點擊sometings輸入,然後我點擊保存按鈕。 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;}
}
實體類的COUTN尚不清楚。
我的實體類被轉換成json。這個模型是由.net創建的。 我的項目有一個母版頁和子頁面。 測試頁:
var model = <%=ViewModelCreator.Create<Test>() %>;
用於測試2頁:
var model = <%=ViewModelCreator.Create<Test2>() %>;
var model = <%= ViewModelCreator.Create()%>;這是否創建了上面的確切代碼?因爲這是你的問題,ko.mapping將使用相同的觀察值,這就是爲什麼值不會回到默認值 –
Anders