ルーターの events プロパティの関数を使用するか (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"
ます。Emberでターゲットが指定されていない場合{{action}}
、ビューでイベントを見つけようとし、次にコントローラー、次にルートを見つけようとします。
これは、今日ソースからビルドされた emberjs のビルドを使用しています。
以下の元の回答:
新しいルーターの{{action}}
は に置き換えられ{{linkTo}}
ます。
emberjs.com のガイドは、新しいルーターに関する新しい情報で常に更新されています。リンクガイドではヘルパー{{linkTo}}
について説明し、アクションガイドでは{{action}}
ヘルパーを使用してテンプレート内のイベントを処理する方法について説明します。