次のリクエストを行うとしましょう。
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
次のように、フィルター処理されたレコードを作成する ( destroy
ed レコードを削除する)非常に醜いハックを考えることができます。
- すべてのレコード (古いレコード) を破棄する
- バックエンドから新しいレコードをリクエストする
- レコードが受信されたら (
.then
)、ストア内のレコード (.all()
)、つまり、破棄されたレコードと新しいレコードをウォークします。 destroy
編集されていない配列にレコードを追加します- このフィルター処理された配列に選択をバインドします。
これは非常に見栄えが悪く、Ember が特定のレコード タイプのストアを完全かつ確実にクリーンアップできないことに本当に驚いています。