EmberJS:同じルートで複数のモデルを読み込むには?
質問
私はWeb開発の初心者ではありませんが、クライアント側のMVCフレームワークにはかなり慣れています。私はいくつかの研究を行い、EmberJSでそれを試してみることにしました。TodoMVCガイドに目を通したところ、納得のいくものでした...。
私は非常に基本的なアプリを設定しました; インデックスルート、2つのモデル、1つのテンプレート。サーバーサイドのPHPスクリプトを実行し、いくつかのDB行を返します。
私を非常に混乱させる一つのことは、同じルートで複数のモデルをロードする方法です。setupController を使用するという情報をいくつか読みましたが、まだはっきりしません。私のテンプレートには 2 つのテーブルがあり、無関係のデータベース行を読み込もうとしています。より伝統的なウェブアプリでは、SQLステートメントを発行して、行を埋めるためにそれらをループさせるだけだったでしょう。私はこの概念をEmberJSに翻訳するのに苦労しています。
どのように私は同じルート上の無関係なデータの複数のモデルをロードするのですか?
最新のEmberとEmber Dataのlibを使用しています。
更新情報
は対処法を示していますが、2番目の回答では、適切な場合と適切でない場合のさまざまな方法を説明しています。
どのように解決するのですか?
注: Ember 3.16+ アプリの場合、以下は同じコードですが、構文/パターンが更新されています。 https://stackoverflow.com/a/62500918/356849
下記はEmber < 3.16用です。3.16+としても完全な後方互換性があるため動作しますが、古いコードを書くのはいつも楽しいわけではありません。
を使用することができます。 Ember.RSVP.hash を使って複数のモデルを読み込むことができます。
app/routes/index.js
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return Ember.RSVP.hash({
people: this.store.findAll('person'),
companies: this.store.findAll('company')
});
},
setupController(controller, model) {
this._super(...arguments);
Ember.set(controller, 'people', model.people);
Ember.set(controller, 'companies', model.companies);
}
});
そして、テンプレートの中で
people
と
companies
で読み込まれたデータを取得します。
app/templates/index.js
<h2>People:</h2>
<ul>
{{#each people as |person|}}
<li>{{person.name}}</li>
{{/each}}
</ul>
<h2>Companies:</h2>
<ul>
{{#each companies as |company|}}
<li>{{company.name}}</li>
{{/each}}
</ul>
このサンプルでTwiddleです。 https://ember-twiddle.com/c88ce3440ab6201b8d58
関連
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み] セレクタの子を取得する方法は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Angularでは、アクティブなルートをどのように決定するのですか?
-
[解決済み】Grunt、NPM、Bowerの違い( package.json vs bower.json )
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
-
[解決済み] jQueryのバージョン1、バージョン2、バージョン3の違いは何ですか?[クローズド]
-
[解決済み] EmberJS / Ember Dataで複数のモデルを1つのルートで使用する方法とは?