我能够使用路由器事件属性中的函数(感谢 sly7_7)或使用控制器中的函数来处理点击:
模板:
<script type="text/x-handlebars" data-template-name="application">
<h1>Content Here:</h1>
{{outlet content}}
</script>
<script type="text/x-handlebars" data-template-name="content-view">
<h2>content</h2>
<button {{ action "createNewApp" }} class="btn btn-primary">Create application</button>
</script>
JS:
var App = Ember.Application.create();
App.CreateAppView = Ember.View.extend({
templateName: "content-view"
});
App.CreateAppController = Ember.Controller.extend({
createNewApp: function(){
console.log("It's clicked, controller");
}
});
App.Router.map(function(match) {
match('/').to('createApp');
});
App.CreateAppRoute = Ember.Route.extend({
renderTemplates: function() {
this.render({ outlet: 'content'});
},
events: {
createNewApp: function(){
console.log("It's clicked, router");
}
}
});
单击按钮时,控制台日志消息为"It's clicked, controller"
,当控制器中的功能被删除时,该操作由路由器处理,控制台日志消息为"It's clicked, router"
。如果在{{action}}
Ember 中没有指定目标,则尝试在视图中查找事件,然后是控制器,然后是路由。
这是使用今天从源代码构建的 emberjs 构建。
原答案如下:
新{{action}}
路由器中的 替换为{{linkTo}}
。
emberjs.com 指南会不断更新有关新路由器的新信息。链接指南涵盖了{{linkTo}}
帮助程序,操作指南讨论了使用{{action}}
帮助程序处理模板中的事件。