点击后立即渲染模板

时间:2013-08-28 21:45:58

标签: javascript jquery html knockout.js

目标

在与KnockoutJS绑定click后立即渲染模板。

场景

我的应用程序上有一个表,该表的每一行都是一个项目。当我点击某个项目时,我会在另一个容器中显示其详细信息。

我按参数传递了有关此项目的所有必要信息,我需要将此参数作为template绑定的数据 - 我该怎么做?

说明性细节

这是我的触发器

[...]
    <tr data-bind="click: showDetails"></tr>
[...]

当有人点击它时,显示以下模板:

<p data-bind="text: itemName"></p>

...在以下容器中:

<div class="details" 
     data-bind="template: {name: 'detailsTemplate',
                           data: ~should be the parameter (object)
                                  that "showDetails" sends~}">
</div>

最终 DOM应该是以下内容,只要我点击某个项目就必须可见:

<div class="details" [...]>
    <p>Microsoft</p>
</div>

有人知道我该怎么办?

1 个答案:

答案 0 :(得分:1)

在主详细信息视图中,一种非常常见的做法是使详细视图将绑定的“已选择”项目。

通过发送到selectedItem绑定中的函数的默认参数是当前绑定上下文({{1}中的当前项目这一事实,可以更轻松地从绑定设置此click }} 捆绑。再加上observable是函数的事实,你可以像这样直接设置foreach

selectedItem

然后你要做的就是绑定data-bind="click: $parent.selectedItem"的一些细节视图。看一下this fiddle的简单示例。