次のリクエストを行うとしましょう。
App.Phones.find({'country' : 'DE'});
私のバックエンドはいくつかの電話番号で応答します。今私がやります:
App.Phones.find({'country' : 'ES'});
今、私は他の電話番号を取得します。しかし:
App.Phones.all();
「古い」番号と新しい番号を蓄積しています。検索の呼び出しの間にストアをクリーンアップすることは可能ですか? どのように?
で試しましたがApp.Phones.clean();、成功しませんでした ( has no method 'clean')
編集
これは非常に奇妙ですがrecord.destroy();、オブジェクトを呼び出しても (intuitivepixel で提案されているように)、ストアから削除されず、 としてマークされるだけdestroyed=trueです。つまり、ドロップダウンにはまだそのオプションが表示されています。実際にレコードをたどってみると ( all())、破棄された後もレコードが残っていることがわかります。最終的には Ember がそれらをストアから削除するかもしれませんが、それは私にとってはまったく役に立ちませんall()。
さらに悪いことに、オブジェクトはそこにありますが、破壊されているため、選択すると表示されますが、選択することはできません!
Ember.A次のように、フィルター処理されたレコードを作成する ( destroyed レコードを削除する)非常に醜いハックを考えることができます。
- すべてのレコード (古いレコード) を破棄する
- バックエンドから新しいレコードをリクエストする
- レコードが受信されたら (
.then)、ストア内のレコード (.all())、つまり、破棄されたレコードと新しいレコードをウォークします。 destroy編集されていない配列にレコードを追加します- このフィルター処理された配列に選択をバインドします。
これは非常に見栄えが悪く、Ember が特定のレコード タイプのストアを完全かつ確実にクリーンアップできないことに本当に驚いています。