0

これは「クエリ」オブジェクトです

{
    id: 1,
    name: "Name of the user",
    query: "The query of the user",
}

これは「ユーザー」オブジェクトです

{
    name:'Name of User'
}

多くのユーザーがいるので、すべてのユーザーを含む配列とすべてのクエリを含む配列を作成しました

query_array=ko.observableArray([{//query},{//other query}])
user_array=ko.observableArray([{//user},{//other user}])

これは私のビューモデルです

var viewModel=function()
{
    var self=this;
    self.users=user_array;
    self.queries=query_array;
}

私の翡翠のテンプレート index.jade

div.span12(data-bind='foreach:user')
    legend(data-bind="text:name")

これは正常に動作します...しかし、私はこれが必要です

div.span12(data-bind='foreach:users')
    legend(data-bind="text:name")
    div.span12(data-bind="foreach:queries")
        //if query name == user.name
        span(data-bind="text:query")
        br

ノックアウトでこれを行うにはどうすればよいですか

4

2 に答える 2

1

ポールはそれを理解していると思います。しかし、私はこのフィドルに時間を費やしたので、ネストされたバインディングを使用する代替ソリューションを次に示します。秘訣は、バインディングの呼び出し方法にあります。$data.name は現在のユーザーの名前で、$root はビュー モデルのルートに到達します。

<!-- ko foreach: $root.users -->
<p>
    <div data-bind="text:$data.name"></div>
    <ul data-bind="foreach: $root.queries">
        <li data-bind="visible: $data.name == $parent.name">
            <div data-bind="text: $data.query"></div>
        </li>
    </ul>
</p>
<!-- /ko -->
于 2013-06-23T22:28:10.960 に答える