1

私はemberjsの初心者です。emberjsでのリクエストの流れを知りたいです。emberjs に関連するいくつかのクエリがあります。

  • テンプレートでアクションを作成できるところならどこでも、emberjs でのコントローラーの特定の役割は何ですか。

  • コントローラー、ルート、およびビューの間には標準の命名規則と関連付けがありますが、コントローラー、ルート、およびビューを関連付ける方法があります。

  • リクエストプロセス時にフロー制御を行う方法は?

    • ハンドオーバー制御をコントローラーにルーティングするか、
    • ルートへのコントローラーハンドオーバーコントロール。

    コントローラーとルートを手動で関連付ける場合は、関連付ける方法。

4

1 に答える 1

0

テンプレートでアクションを作成できるところならどこでも、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); 
   }
});

ルートに入るたびに、personsember は API を呼び出し (この場合は ember データを使用)、特定の人を見つけます。さらに、この場合はロード ルートを表示し、失敗後にフォールバックを提供します。

PersonViewテンプレートが正常にレンダリングされた後に実行される jQuery コードを配置できる場所になります。

App.PersonView = Ember.View.extend({
   didInsertElement: function() {
      this.$().find('*[data-toggle=tooltip]').tooltip();  
   }
});

この例では、ブートストラップ ツールチップをテンプレートに追加しています。

リクエストプロセス時にフロー制御を行う方法は?

ルートはコントローラーの前に処理setupControllerされます。各ルート内には、デフォルトでモデルをコントローラーに設定するメソッドもあります。

コントローラーとルートを手動で関連付ける場合は、関連付ける方法。

setupControllerメソッドと最終的には上書きできますrenderTemplate。もう何もする必要はありません。ember の命名規則に従うことをお勧めします。

さらに、コントローラが発生した処理を行わない場合actionは、ルートに伝播することを確認してください。

于 2015-01-16T20:40:43.073 に答える