在我的应用程序中,我显示了一个帐户列表,如下所示:
<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
。