淘汰绑定上下文将父级作为参数传递
Posted
技术标签:
【中文标题】淘汰绑定上下文将父级作为参数传递【英文标题】:knockout binding context pass parent as parameter 【发布时间】:2014-06-20 05:06:48 【问题描述】:当我单击表格行时,我将信息对象传递给函数 $root.goToEvent。但我想传递该对象的上层,在本例中为 events[[1]] 以及 info 和 rules。屏幕和代码已附加。提前致谢。
<table class="mainTable" style="width:820px" border="1" data-bind="with: dataToShow">
<tr>
<td valign="top">
<!-- Events List -->
<table class="events" >
<thead><tr><th >События</th></tr></thead>
<tbody id="eventsTable" data-bind="foreach: events">
<!-- ko with: info -->
<tr id="trEvent" data-bind="css: selected : $data==$root.chosenEvent(), click: $root.goToEvent">
<td data-bind="text: event_title"></td>
</tr>
<!-- /ko-->
</tbody>
</table>
对象: https://flic.kr/p/nvsrQB
【问题讨论】:
【参考方案1】:一个选项是 bind
带有适当上下文 (this
) 和初始参数的函数。
类似:
data-bind="click: $root.goToEvent.bind($root, $parent)"
这将调用goToEvent
,并将this
的值设置为$root
,第一个参数是父上下文(代码中的event
对象)。
【讨论】:
谢谢,据我了解,$parents[1] 会传递上层对象,而 $parents[2] 会传递上层对象,以此类推直到 $root,对吧? @DmitriiG。 - 是的 -$parents[0]
将与 $parent
相同,然后您可以从那里向上移动范围。此页面是文档:knockoutjs.com/documentation/binding-context.html以上是关于淘汰绑定上下文将父级作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章
淘汰赛 - 从 event.target 传递属性值作为点击事件的参数