0

DS.RestAdapter リビジョン 12 を使用してサーバーに結果を照会していますが、複数回照会するとページに結果を表示するのに苦労しています。

次のアクションに関連付けられた検索ボタンを持つアプリケーションがあります。

search: function() {
  this.set('searchResults', App.Property.find());
}

次に、私の handlebars テンプレートには、次のような結果を表示するためのコードがあります。

{{#if searchResults.isLoaded}}
  {{searchResults.length}}
{{/if}}

この構成では、検索ボタンをクリックするたびに JSON リクエストが行われ、すべてのプロパティが取得されて画面に表示されます。searchResults オブジェクトのタイプは DS.RecordArray であり、オブジェクトへの参照は一定のままのようです。つまり、テンプレートに {[searchResults}} を表示すると、取得され、ID は同じままです。

ただし、パラメーターに基づいてクエリを実行するようにコードを変更するとすぐに、次のようになります。

search: function() {
  this.set('searchResults', App.Property.find({hello: 'world}));
}

次に、検索ボタンをクリックするたびに、正しい検索パラメーターを使用してサーバーにクエリが実行され、最初にこれを行うと、検索結果がページに正しく表示されます.....しかし....として検索をもう一度クリックするとすぐに、結果が消えます。さらに、searchResults オブジェクトのタイプは DS.AdapterPopulatedRecordArray になりました。これを画面に表示すると、検索をクリックするたびに {{searchResults}} が新しいインスタンスを取得することがわかりますが、isLoaded プロパティは常に false であり、私の結果は表示されません。

私は何を間違っていますか?助けてくれてありがとう。

4

1 に答える 1

0

誰かがこのようなことを経験した場合、ロードしていたオブジェクトの didLoad 関数を上書きしたために問題が発生していました。didLoad 関数では、アソシエーションが空であるかどうかを確認し、空である場合は、ブラウザーでローカルに割り当ての新しいインスタンスを作成していました。

これは、ロードしていたオブジェクトの配列全体の「isLoaded」ステータスを混乱させているようです。

于 2013-05-26T06:59:43.007 に答える