左側にコンテンツ ビューとサイドバーがあるアプリケーションを作成しようとしています。サイドバーにあるメニューを実装する方法がわかりません。当然、コントローラーとすべてを備えた独自のモジュールにしたいと思いますが、これを試すときに発生する多くの問題を見つけています。私のアプリケーションテンプレートには、コンテンツを配置するアウトレットがあり、メニューを含めます{{view}}
が、それが属するコントローラーに接続できません。
http://jsfiddle.net/tzYE7/7/で提案されているソリューションを試してみましたが、コントローラーのプロパティにアクセスできますが、イベントは実行されません。次に、代わりにメニューを に統合しようとしましたApplicationController
が、それはあまりエレガントではなく、かなり面倒です。また、モデルをメニューに接続したいと考えていますが、これらすべてを に取り込もうとすると、かなり混乱するでしょうApplicationController
。メニューを単に静的にしたくないということです。コマンドで非表示にしたり表示したりできるようにしたいのです。
私はフレームワークにかなり慣れていないので、ワークフローとすべてのビットとピースを接続する方法に頭を悩ませようとしています。これを適切に行う方法について何か考えはありますか?
編集:
「あなたが提供した例の jsfiddle は、古いルーターを使用しています。実際に現在のコードを投稿できますか。これにより、支援が容易になります」 – 直感的なピクセル
これはフレームワーク関連の質問であり、私のコードに関するものではないため、実際には必要ではないと考えましたが、さらに詳しく説明します。
私が得たのは基本的にアプリケーションテンプレートです:
<script type="text/x-handlebars" data-template-name="application">
<aside id="sidebar">
{{view App.MenuView}}
</aside>
<section id="content>
{{outlet}}
</section>
</script>
私が最初に発見したのは、メニュー テンプレートでアクセスできるコントローラー プロパティがないことでした。これは、次の github の問題 ( https://github.com/emberjs/ember.js/issues/1712 ) で言及されていることがわかりました。これは、ビュー内でコントローラーを接続したことを示唆する jsfiddle への参照を見つけた場所でもあります。挿入されたもの:
App.MenuView = Ember.View.extend({
templateName: 'menu',
init: function() {
this._super();
this.set("controller", App.MenuController.create());
}
});
ただし、イベントは委任されMenuController
ていないため、まだ何かが機能していません。その時、代わりにすべてを統合しようとしましApplicationController
た。
Ember でこれを行う標準的な方法は何ですか? また、アプリケーションの他のコントローラーからメニューを非表示/表示できるようにしたいのですが、それが機能するには、他のコントローラーがメニューコントローラーに依存する必要があるようです。代わりにイベントで行うことはできませんか?
それは基本的に私が疑問に思っていることです。あなたの時間と知識をありがとう!:)