0

Person モデルの 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ですか?

モデル- 人物とは何の関係もないので、モデルに置くのは間違っているようです。

View Model - Person ごとにする必要があるため、View Model に配置すると機能しません。

フィドル

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 に答える