2013-07-02 15 views
6

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, 
     })); 
    } 
}); 

を適用されている検索フィルタに気づきます。ただし、親を持たないカテゴリのみを表示するようにフィルタを追加すると、アイテムが削除されてもリストは更新されません。私が別のセクションに移動して戻ってくると、リストがリロードされ、カテゴリはなくなります。ここで

ArrayControllerdeleteCategory方法です:

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}} 

ありがとうございます!

+0

2つのメモ:これを他の種類のフィルタでテストしましたが、モデルクエリにフィルタが適用されていれば失敗します。フィルタなしでのみ動作し、そうでなければリストは更新されません。私はまた、削除が完了した後にその内容を設定することによって、ArrayControllerのクエリを強制的にリロードする方法を発見しました。これは今のところやりますが、それは厄介なハックです。 –

+0

私も同様の問題があります。あなたはこれを解決しましたか? –

+0

私は最終的にこの問題をリスト内の各項目の横にあるチェックボックスまで追跡しました。すべてのチェックボックスは関連オブジェクトの属性にバインドされていましたが、リストをロードするときに誤ったイベントが発生し、この問題が発生しました。私は問題を解決するためにそれらに関連するチェックボックスとイベントを削除してしまいました。詳細が必要な場合は、さらに掘り下げてお知らせします。 –

答えて

0

これはもはやEmber Dataでの作業方法ではありません。 https://github.com/emberjs/data/blob/master/TRANSITION.md

+0

私は私の質問を削除しました。私はあなたに尋ねた人ではないので、私はあなたのものを受け入れることができません:あなたはTaylan Pinceをバグすべきです。... – intuitivepixel

+0

スタックオーバーフローを正しく理解すれば、 ..あなたが何を言及しているのか分かりません、残念ですが、すべていいです:)古いものを消去したい場合、スタックオーバーフローが厄介です。 "答えた"とは、 "答えられ、その答えが受け入れられた"ことを意味します。 –

関連する問題