(注意:我使用的是Ember版本1.0.0-rc.3)
我正在尝试使用视图捕获{{linkTo}}
的“点击”,以便我可以执行其他操作(基本上滚动侧边栏中的用户列表),只需加载新模板。我对此比较陌生(但阅读了文档!),我认为以下内容可行:
“用户”模板:
{{#each user in users}}
{{#view App.ClickView}}
{{#linkTo user user}}{{ user.name }}{{/linkTo}}
{{/view}}
{{/each}}
观看代码:
App.ClickView = Ember.View.extend({
click: function(evt) {
// do stuff
}
});
对于上下文,布局模板:
<div id='sidebar'>
{{#each user in users}}
{{#linkTo user user}}{{ user.name }}{{/linkTo}}
{{/each}}
</div>
<div id='main'>
{{ outlet }}
</div>
返回用户模板,您可以看到每个{{linkTo}}
都包含在视图中。我希望点击{{linkTo}},因此可以冒泡到视图(App.ClickView
)。不幸的是,事实并非如此。当{{linkTo}}
发生咔嗒声时,点击不会被冒泡到视图......我该怎么办?
注意#1 :
如果我用{{linkTo}}
元素替换<a>
(div#main中的 !我不打算替换div#sidebar中的那些),它可以正常工作,并且点击被视图捕获。但是,我不太确定我想沿着这条路走下去(我必须复制{{linkTo}}
的功能!)。而且我认为应该有更好的方法来做到这一点。有吗?
注意#2 :
*请注意,我也知道我可以将我想要的“do stuff”代码放在UserRoute的renderTemplate()中,但问题是该路由的每个链接都会发生这种影响(包括侧边栏 - 这不是我想要的)。我希望滚动到仅触发特定{{linkTo}}
s - 特别是div#main中的{{linkTo}}
s。
答案 0 :(得分:1)
我建议在其中使用带有{{action ... target="view"}}
的锚(&lt; a&gt;)标记而不是linkTo,在视图中应用条件逻辑,然后在适当的情况下重新发送到控制器({{ 1}},让它冒泡到路由器,并在路由器事件处理程序中执行transitionTo。