【发布时间】:2013-05-15 16:09:05
【问题描述】:
(注意:我使用的是 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:
如果我用<a> 元素替换{{linkTo}}(only in div#main!我不打算替换 div#sidebar 中的那些),它可以工作,并且点击被捕获由视图。但是,我不太确定我想走这条路(我必须复制{{linkTo}}!的功能)。我认为应该有更好的方法来做到这一点。有吗?
注意 #2:
*请注意,我也知道我可以将我想要的“做事”代码放在 UserRoute 的 renderTemplate() 中,但问题是该效果将发生在该路由的每个链接(包括侧边栏 - 这不是我想要的)。我希望滚动只触发特定的{{linkTo}}s - 特别是 div#main 中的{{linkTo}}s。
【问题讨论】:
标签: ember.js