0

假设我有一个 ko.observableArray 的 Person 模型(如下):

// 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

模型- 将它放在模型上似乎是错误的,因为它与人无关。

视图模型- 我需要每个人都有,所以把它放在视图模型上是行不通的。

小提琴

4

2 回答 2

1

在 JavaScript 中没有模型。只要有一个视图模型。您的模型应该只存在于您实际存储对象的服务器上。

在这种情况下,Person 确实是一个视图模型。然后,您可以在主视图模型中放置大量 Person 对象,但每个人仍然是一个视图模型。

因此,将您的 isVisible 属性放在您的 Person 视图模型上。

于 2013-01-02T20:55:28.553 回答
0

我认为您在 Model 和 ViewModel 之间感到困惑。在您的情况下,Model 是 ViewModel,而您所说的 viewModel 是 ViewModel 的一个实例,即,一旦您使用 ko.observables 定义对象,它就是仅在客户端使用的 ViewModel。您需要的任何数据绑定属性都应该在 ViewModel 上定义。因此,总而言之,您应该根据您的要求将 Person 对象定义中的 isVisible 定义为可观察值或计算值。

于 2013-01-02T20:05:37.720 回答