【发布时间】:2016-10-14 05:43:03
【问题描述】:
我有以下型号
self.newItem = ko.observable({
manufacturer: ko.observable(),
itemnumber: ko.observable(),
itemDescription: ko.observable(),
priceclass: ko.observable(),
currentPrice: ko.computed(function () {
return "1.22";
}, this),
aeAuthority: ko.computed(function () {
return "1.02PC";
}, this),
requestedMinimumQuantity: ko.computed(function () {
return "!.22 PC";
}, this),
RequestedPrice: ko.observable(),
ExpirationDate: ko.observable(),
ItemDetails: ko.observable(),
Margin: ko.observable(),
Status: ko.observable()
});
我想清除此 observable 中的数据,但是当我执行 self.newItem = ""; or self.newItem(''); 时,它会删除 newItem 中的所有 observable,因此 newItem 中没有任何属性。我可以进入并单独清除 newItem 中的每个可观察对象,但有没有更好的方法。
谢谢
【问题讨论】:
-
您是在问如何从新项目中删除所有项目,然后放入一个空项目以便他们可以更新它??
-
定义“清除”。此外,请描述您尝试实现的功能。您很可能正在尝试以不同的方式更好地解决问题。
-
清除我的意思是让 newItem 中的所有 observables 都为空,例如制造商 = ''。我将它映射到模态对话表单中,因此当表单关闭时,我想清空新项目,以便映射到制造商或项目编号等数据的所有字段都变为空。
-
当你需要一个新的模式时,为什么不简单地生成一个新的视图模型呢?这将是在淘汰赛中做到这一点的方法。比编写额外代码来重置现有视图模型要容易得多。但是你当然可以结合
ko.utils.objectForEach()和ko.isWritableObservable()来创建一个循环,覆盖任意对象的所有可观察属性。
标签: knockout.js