1日分のアクティビティを管理するアレイコントローラーActivitiesController
があります(フルセットではありません)。model
のプロパティをActivitiesRoute
次のように設定しました。
return this.store.find('activity', {on_date: params.on_date});
これにより適切なレコードが引き戻され、Ember デバッガー内でそれらすべてを確認できますが、何らかの理由でこれらのレコードをテンプレートで使用できません ( activities.hbs
)。それは私を困惑させましたが、実際にはとにかく最終的な解決策ではありません(私はそれがうまくいくと思っていました).
私が実際にやりたいことは、指定された日付にフィルター処理されたローカル Activity
レコードの配列をコントローラーのコンテンツで管理することです。このフィルタリングされた配列は、更新クエリへの非同期呼び出しに基づいて定期的に更新されます: find('activity', {on_date: this.get('on_date'), since: this.get('since');
.
その説明が理にかなっていることを願っています。SOに関する他のクエリを調べたところ、有望なスタートがいくつかありましたが、答えはすべて古くなっているようで、このナットを解くのに役立つものを見つけることができました.
要約すると、私はしたい:
- コントローラーを、特定の日付に対応するローカル レコード
content
のアクティブ フィルターにします。Activity
- コントローラーに自動的に表示されるモデルに追加のレコードを非同期にプッシュできるようにします (それらが適切な日付であると仮定します)。
余談ですが、現在のmodel
フックがアクティビティ テンプレートで利用できない理由を知りたいです。
- - - - - - - アップデート - - - - - - -
モデルフックでこれを試しました:
return this.store.filter('activity',function(activity){
var itemDate = new Date(activity.get('start_time'));
itemDate = moment(itemDate).format('YYYY-MM-DD');
return itemDate === params.on_date;
});
これは、@Bradley の提案と一致している必要があります。時間コンポーネントを切り詰める必要があったため、moment.js ライブラリを使用してそのロジックを追加しました。これはエラーをスローしませんが、サーバー自体からレコードをプルすることもありません。そのため、次のコード行をモデル フックに追加しました。
this.set('activities', this.store.find('activity', {on_date: params.on_date}));
デバッガーを使用すると、 にとして設定されたActivityRoute
プロパティがあり、そのプロパティの長さがその日のアクティビティ数である 15 であることがわかります。activities
DS.PromiseArray
activities
また、currentModel
ofActivityRoute
が a に設定されているように見えDS.FilteredRecordArray
、適切な 15 レコードも含まれていますが、私のハンドルバー テンプレートはまだそれを反復することができません。これは、のcontent
プロパティがActivityController
設定されていないためだと思います。この状況で Ember がこのステップを実行しないのはなぜですか? これを強制する必要がありますか、それともシステムにからかう必要があるグレムリンがありますか?