7

新しい ember ルーティングとコントローラーに関して、どのレイヤーにどのようなロジックがあるのか​​知りたいです。

以下のルートを例にとると:

step1: Ember.Route.extend
  route: '/step1'
    connectOutlets: (router, event) ->
      exercise = WZ.Exercise.createRecord()
      router.get('exercisesNewStep1Controller').set 'groups', WZ.store.find(WZ.Group)
      router.get('exercisesNewController').connectOutlet 'step', 'exercisesNewStep1', exercise

私の ExercisesNewStep1Controller は現在ロジックレスです:

WZ.ExercisesNewStep1Controller = Em.Controller.extend()

推奨されるアドバイスは、ルートが正しいアウトレットを正しいコントローラーに割り当て、コントローラー内の他のロジックを処理するようにすることです。

コントローラーを次のようにリファクタリングする必要があります。

WZ.ExercisesNewStep1Controller = Em.Controller.extend
  createGroup: ->
    @set 'groups', WZ.store.find(WZ.Group)

これは非常に単純な例ですが、ロジックは成り立つと思います。

すべてのレイヤーで何がどこにあるのか少し混乱しています。これらすべての xxxController、xxxView ファイルを作成し、それらを結合する必要があるため、少量のオーバーヘッドがあると思います。

私はエンバーが大好きですが、この点を上げたいだけです.

4

3 に答える 3

5

私は Tilde チームといくつかのやり取りを行い、Tom Dale はhvgotcodesによって提案された方法に従うように教えてくれました。

しかし、Peter Wagenet との話し合いの後、改良が行われました。私の尋問への返答として、Peter と Yehudaは、Tom の説明から得た立場を緩和しました。

したがって、全体像を次のように要約します。

  • 動作は、ルートのイベント ハンドラーの高レベルでコーディングする必要があります。
  • しかし、因数分解された低レベルのプリミティブは、コントローラーでローカライズされる可能性があります (/すべきでしょうか?) 。

その理由は、特定のルート内ですべての処理をスコープする必要があるためです。これにより、アプリ全体の一貫した動作が保証され、可能なすべての処理がアプリのどの部分にも開かれることはありません。

于 2012-07-26T13:24:33.833 に答える
4

Sproutcore(Sproutcoreから派生したEmberにこれが当てはまらない場合は、誰かが発言します)では、コントローラーはほとんどの場合、ダムプロキシである必要があります。彼らは何もしません。

それがEmberにも当てはまると仮定すると、ロジックをそこに移動することはしません。

推奨されるアドバイスは、コントローラー内の他のロジックを使用して、正しいコンセントを正しいコントローラーに割り当てるようにルートに指示することです。

それは正しいと思います。私がオンラインで見た例から、ルートは単なる州です。このリンクのgithubに移動すると、ルートが状態を拡張していることがわかります。したがって、アプリケーションレベルのイベントは、ルート(つまり、州)で処理する必要があります。ここで、関連するオブジェクトを取得し、それらを適切なコントローラーに配置します。

于 2012-07-26T12:05:54.600 に答える
2

https://speakerdeck.com/u/tomdale/p/emberjs-more-than-meets-the-eyeスライド 55.

実際、現在のグッドプラクティスで最新かどうかはわかりませんが、モデル管理 (作成/編集/削除) はどこにも表示されていないようです。ビューイベントに応答して、connectsOutlets メソッドで行う必要があるように思えます。だからあなたの最初の例は私には良さそうです。さらに、このスライドでは、コントローラーにはほとんどロジックが含まれていないはずですが、実際に「非常に少ないロジック」とは何でしょうか?

特に経験豊富な ember ユーザーからのアドバイスは他にないため、あなたの質問は私にとって非常に重要です。

于 2012-07-26T10:21:43.723 に答える