假设我有一个人物模型的ko.observableArray(下面):
// Model
var Person = function () {
this.name = ko.observable();
this.age = ko.observable();
};
// View Model
var viewModel = {
people: ko.observableArray([
new Person("Bob", 21),
new Person("Bill", 25)
])
};
使用以下HTML:
<ul data-bind="foreach: people">
<li>
<span data-bind="text: name"></span>
<ul data-bind="visible: isVisible">
<li>
<span data-bind="text: age"></span>
</li>
</ul>
</li>
</ul>
我应该在哪里放置isVisible
?
模型 - 将它放在模型上似乎是错误的,因为它与此人无关。
查看模型 - 我需要将其设置为每个人,因此将其放在视图模型上是行不通的。
答案 0 :(得分:1)
JavaScript中没有模型。只是有一个视图模型。您的模型应仅存在于您实际存储对象的服务器上。
在这种情况下,Person实际上是一个视图模型。然后,您可以在主视图模型中放置大量Person对象,但每个人仍然是视图模型。
因此,将您的isVisible属性放在Person视图模型上。
答案 1 :(得分:0)
我认为你在Model和ViewModel之间感到困惑。在您的情况下,Model是ViewModel,您所谓的viewModel是ViewModel的一个实例,即,一旦您使用ko.observables定义对象,它就是仅在客户端使用的ViewModel。您需要的任何数据绑定属性都应在ViewModel上定义。因此,总之,您应该根据您的要求将Person对象定义中的isVisible定义为可观察值或计算值。