我的淘汰视图模型变得相当大,我有几个与属性BillingAddress
相关的可观察函数和事件处理程序。
例如,我有
self.BillingAddressEdit
self.BillingAddressEditMode
self.BillingAddressAddNew
self.BillingAddressAddNewMode
self.BillingAddresses
self.BillingAddressesLoading
......和其他几个人。
我想要做的是将它们收集到BillingAddress对象(或函数?)中,该对象具有与属性相同的可观察对象。
这样有效的事情
self.BillingAddress = { // or possibly function() {
AddNew: ko.observable(),
AddNewMode: ko.observable(),
Addresses: ko.observableArray(),
Edit: ko.observable(),
EditMode: ko.observable(),
Loading: ko.observable()
}
并在视图上访问这些
<tagName data-bind="foreach: BillingAddress.Addresses">
</tagName>
要实现这一点,这个BillingAddress
对象或函数在我现有的视图模型中采用什么形式?
答案 0 :(得分:1)
在您的情况下,BillingAddress
可以是单个对象。当您的子视图模型多次使用时,该函数是有用的,例如在根模型中的observableArray
。
<强>更新强>
self
变量用于记住viewModel的上下文。当你有一些回调时,它是有用的,它可以有自己的上下文。
在您的情况下,您的模型可能如下所示:
var BillingAddressViewModel = {
AddNew: ko.observable(),
AddNewMode: ko.observable(),
Addresses: ko.observableArray(),
Edit: ko.observable(),
EditMode: ko.observable(),
Loading: ko.observable()
}
function RootViewModel() {
var self = this;
self.BillingAddress = BillingAddressViewModel;
}