1

私は Ember の学習が非常に遅いプロセスにあり、重要な例に関しては、ガイドとドキュメントが大幅に制限されていることに気付きました。

今私の質問に。

次のルーター定義があるとします。

App.Router.map(function () {
this.resource('home', function() {
  this.resource('weather', function() {
    this.route('site', {path: '/:weather_site'});
  });
});

ユーザーが home.weather.index ルートに入ると、モデル フックが実行され、サーバーからすべての気象情報が取得されます。次にユーザーが home.weather.some_site に入ると、新しいルートのモデル フックがサーバーからその特定のサイトの気象データを取得します。この冗長性をどのように防ぐことができますか? 言い換えれば、コントローラーはどのようにして互いにデータを通信できるのでしょうか? これを実現するには、各ルートで setupController フックを使用する必要がありますか、それともより良い方法がありますか?

Ember を出入りするデータ フローを理解するのに役立つリソースはありますか? ソースを掘り下げるよりも早く Ember を学ぶのに役立つリソースはありますか?

4

1 に答える 1

1

この冗長性をどのように防ぐことができますか?

home/weather/index のモデル フックがサーバーからすべての気象情報を取得するかどうか/方法/理由は明確ではありません。それが望ましい動作である場合、ユーザーがホーム/天気/サイトに入ったときに同じデータを取得する理由がないことに完全に同意します。

ember-data を使用している場合、次の理由から冗長性はありません。

  • ユーザーが home/weather/index にApp.Site.find()アクセスすると、すべての気象データが取得されます
  • 彼らが家/天気/サイトApp.Site.find(weather_site)にアクセスすると、キャッシュからサイトが返され、サーバーに新しいリクエストは行われません
  • ユーザーがホーム/天気/サイトに直接アクセスする (またはブラウザを更新する) と、App.Site.find(weather_site)サーバーが呼び出され、そのサイトのデータのみが取得されます。

したがって、私が見逃しているものがない限り、防ぐべき冗長性はありません。

言い換えれば、コントローラーはどのようにして互いにデータを通信できるのでしょうか?

不必要に思えますが、あなたが尋ねるので、コントローラーはバインディングを介して互いに通信します。コントローラーのプロパティを介して、あるコントローラーから別のコントローラーへの依存関係を宣言するneedsと、Ember はその依存関係を自動的に注入します。これがどのように機能するかの詳細については、ember ガイドの依存関係 - 間 - コントローラーを参照してください。

これを実現するには、各ルートで setupController フックを使用する必要がありますか、それともより良い方法がありますか?

この場合、それは必要ないはずです。

Ember を出入りするデータ フローを理解するのに役立つリソースはありますか?

データフローの意味が明確ではありません。Luke Melia のgothamjs プレゼンテーションから多くのことを学べると思います。

ソースを掘り下げるよりも早く Ember を学ぶのに役立つリソースはありますか?

ソースを読むことは常に良い選択肢ですが、他にも多くのリソースがあります。embercastember を毎週チェックすることをお勧めします

于 2013-08-18T04:30:36.740 に答える