0

シンプルな編集フォームのテンプレートがあります。編集するドキュメントの_idは、セッション変数 ( mini-pagesURL: で設定http://example.com/items/4zt4z3t3t) に含まれます。関数では、Template.editForm.createdを使用してコレクションから対応するドキュメントを取得しようとしますItemCollection.findOne({_id:_id})。は_id、すべての場合で正しく設定されています。

関数に移動しhttp://example.com/4zt4z3t3tてデバッグすると、コレクションに項目がありますが、未定義が返されます。したがって、_id でアイテムを見つけることはできません。また、アイテムの検索手順をルーティング ステージに移動すると、検索の結果もありません。その後、コレクションは期待どおりに機能します。createdItemCollection.findOne()

ポインタはありますか?

4

1 に答える 1

0

Meteor はデータ オン ザ ワイヤの原則を使用します。これは、HTML がロードされたときに、少なくとも最初はデータが一緒に送信されないことを意味します。

.createdしたがって、データがダウンロードされた後にそのテンプレートが読み込まれることが予想される場合を除き、関数内のデータにアクセスすることはできません。undefinedこれが最初に返される理由ですが、後で確認するとそこにあります。

データが完了したときにサブスクリプションからのコールバックを待ってから、テンプレートをロードすることができます。

また

テンプレートでリアクティブを使用し、空の状態でロードして、データが入ってきたら自動的にデータを入力します (最も簡単です)。テンプレート内のデータにアクセスし、handlebars ヘルパーを使用してデータを入力し、.renderedコールバックを使用して後で変更を行います。

于 2013-06-28T11:42:44.830 に答える