ember-data
(最新)、ember rc6
および在庫RESTコントローラを持つアプリケーションでは、単純なEmber.ArrayController
を使用しています。モデルがフィルタリングされた場合、deleteRecordはArrayControllerを更新しません
アレイコントローラによってレンダリングされたリストの各項目の横に削除アクションがあります。アイテムが削除されると、適切なREST API呼び出しが行われ、データベースから適切に削除されます。サーバーは正しい204
応答で応答します。ここで
は私のルータの設定である、(アイテムが自動的直後にコミットリストから削除されます)私は検索フィルタを削除し、すべてのカテゴリをロードすると、すべてが正常に動作し
App.CategoriesIndexRoute = Ember.Route.extend({
setupController : function(controller, model) {
this._super(controller, model);
controller.set("content", App.Category.find({
"parent": null,
}));
}
});
を適用されている検索フィルタに気づきます。ただし、親を持たないカテゴリのみを表示するようにフィルタを追加すると、アイテムが削除されてもリストは更新されません。私が別のセクションに移動して戻ってくると、リストがリロードされ、カテゴリはなくなります。ここで
はArrayController
でdeleteCategory
方法です:
deleteCategory: function(category) {
var transaction = this.get("store").transaction();
transaction.add(category);
category.deleteRecord();
transaction.commit();
}
これはember-data
またはemberjs
バグですか?そうでない場合、私はここで何が間違っていますか?それがバグなら、アイテムを削除した後、ArrayControllerの内容を強制的にリロードする方法はありますか?あるいは、ArrayControllerからカテゴリを手動で削除することはできますか?
UPDATE 1:
ここは私が項目のリストを表示しています方法です:
category.one("didDelete", this, function() {
this.set("content", App.Category.find({
parent: parent_category
}));
});
UPDATE 2:私は、その内容を設定することにより、アレイコントローラのコンテンツ更新を強制するために管理
テンプレート内:
{{#each category in controller.content }}
<tr>
<td><a {{ action "detailCategory" category }}>{{ category.name }}</a></td>
<td><a {{ action "deleteCategory" category }}>Delete</a></td>
</tr>
{{/each}}
ありがとうございます!
2つのメモ:これを他の種類のフィルタでテストしましたが、モデルクエリにフィルタが適用されていれば失敗します。フィルタなしでのみ動作し、そうでなければリストは更新されません。私はまた、削除が完了した後にその内容を設定することによって、ArrayControllerのクエリを強制的にリロードする方法を発見しました。これは今のところやりますが、それは厄介なハックです。 –
私も同様の問題があります。あなたはこれを解決しましたか? –
私は最終的にこの問題をリスト内の各項目の横にあるチェックボックスまで追跡しました。すべてのチェックボックスは関連オブジェクトの属性にバインドされていましたが、リストをロードするときに誤ったイベントが発生し、この問題が発生しました。私は問題を解決するためにそれらに関連するチェックボックスとイベントを削除してしまいました。詳細が必要な場合は、さらに掘り下げてお知らせします。 –