テンプレートでアクションを作成できるところならどこでも、emberjs でのコントローラーの特定の役割は何ですか。
コントローラーは、MVC パターンのようにモデルをビューに接続しています。Ember.JS では、コントローラーを使用して、特定のモジュールで使用されるロジックを保持したり、依存関係を管理したり、条件を保存したりできます。テンプレートでは単純な条件のみ (and/or なし) しか使用できないため、より複雑な条件が必要な場合はいつでもコントローラー内に配置する必要があります。例えば
App.PersonController = Ember.ObjectController.extend({
isPersonRich: function() {
return @get('person.money') > 1000000 && @get('person.isReal')
}.property('person.money', 'person.isReal')
});
だから私は架空の人物ではなく、100万以上の資産を持っている人が金持ちです。
{{#if isPersonRich}}
<p>This person is rich!</p>
{{/if}}
コントローラー、ルート、およびビューの間には標準の命名規則と関連付けがありますが、コントローラー、ルート、およびビューを関連付ける方法があります。
通常、ルートはバックエンドからデータをフェッチします。
App.PersonRoute = Ember.Route.extend({
model: function(params) {
this.store.find('person', params.person_id);
}
});
ルートに入るたびに、persons
ember は API を呼び出し (この場合は ember データを使用)、特定の人を見つけます。さらに、この場合はロード ルートを表示し、失敗後にフォールバックを提供します。
PersonView
テンプレートが正常にレンダリングされた後に実行される jQuery コードを配置できる場所になります。
App.PersonView = Ember.View.extend({
didInsertElement: function() {
this.$().find('*[data-toggle=tooltip]').tooltip();
}
});
この例では、ブートストラップ ツールチップをテンプレートに追加しています。
リクエストプロセス時にフロー制御を行う方法は?
ルートはコントローラーの前に処理setupController
されます。各ルート内には、デフォルトでモデルをコントローラーに設定するメソッドもあります。
コントローラーとルートを手動で関連付ける場合は、関連付ける方法。
setupController
メソッドと最終的には上書きできますrenderTemplate
。もう何もする必要はありません。ember の命名規則に従うことをお勧めします。
さらに、コントローラが発生した処理を行わない場合action
は、ルートに伝播することを確認してください。