私のアプリケーションでは、次のようなアカウントのリストを表示します。
<script type="text/x-handlebars" data-template-name="accounts">
{{#each account in controller}}
{{#linkTo "account" account class="item-account"}}
<div>
<p>{{account.name}}</p>
<p>@{{account.username}}</p>
<i class="settings" {{ action "openPanel" account }}></i>
</div>
{{/linkTo}}
{{/each}}
</script>
各アカウントには、ユーザーがそのアカウント専用の設定を含む設定パネルを開くことができるボタンがあります。このクイックスクリーンキャストでわかるように、次のようになります。
http://screencast.com/t/tDlyMud7Yb7e
私は現在、AccountsController
:にあるメソッド内からパネルのオープンをトリガーしています。
Social.AccountsController = Ember.ArrayController.extend({
openPanel: function(account){
console.log('trigger the panel');
}
});
しかし、この目的のために定義したビュー内からパネルを開く方が適切だと思います。これにより、ビューにアクセスできるようになり、ビューに含まれるDOMを操作できるようになります。
Social.MainPanelView = Ember.View.extend({
id: 'panel-account-settings',
classNames: ['panel', 'closed'],
templateName: 'mainPanel',
openPanel: function(){
console.log('opening the panel');
}
});
<script type="text/x-handlebars" data-template-name="mainPanel">
<div id="panel-account-settings" class="panel closed">
<div class="panel-inner">
<a href="#" class="button button-close"><i class="icon-cancel"></i>close</a>
<h3>Account Settings</h3>
<a href="/accounts/social/connections/" class="button button-disconnect">Disconnect Account</a>
</div>
</div>
</script>
Social.MainPanelView
私が直面している問題は、のコンテキストからでメソッドをトリガーする方法がわからないことAccountsController
です。より良い解決策はありますか?
更新1
私が話していることを説明するためにフィドルを作成しました:
ボタンをクリックすると、にあるshowPanelメソッドが呼び出されることがわかりますApp.IndexController
。しかし、代わりににあるshowPanelメソッドを呼び出せるようにしたいと思いますApp.SomeView
。