2013-07-02 13 views
6

Basit bir Ember.ArrayController (ember-data (en yeni), ember rc6 ve bir stok REST denetleyicisiyle bir uygulamada kullanıyorum.deleteRecord, Model filtre uygulandığında ArrayController güncelleştirmiyor

Dizi denetleyicisinin oluşturduğu listedeki her öğenin yanında bulunan eylemleri siliyorum. Bir öğe silindiğinde, uygun REST API çağrısı yapılır ve veritabanından düzgün bir şekilde kaldırılır. Sunucu doğru 204 yanıtı ile yanıt verir.

İşte benim yönlendirici kurulum, ben bulmak filtreyi çıkarmak ve tüm kategorileri yüklerseniz bulmak filtresi

App.CategoriesIndexRoute = Ember.Route.extend({ 
    setupController : function(controller, model) { 
     this._super(controller, model); 

     controller.set("content", App.Category.find({ 
      "parent": null, 
     })); 
    } 
}); 

uygulanmakta olan fark, her şey (öğe otomatik hemen sonra işlemeye listeden çıkarılır) çalışıyor. Bununla birlikte, filtreyi yalnızca bir üst bilgisi olmayan kategorileri görüntülemek için eklediğimde, bir öğe silindiğinde liste güncellenmez. Başka bir bölüme geçip geri dönersem, liste yeniden yüklenir ve kategori biter.

deleteCategory: function(category) { 
    var transaction = this.get("store").transaction(); 

    transaction.add(category); 
    category.deleteRecord(); 
    transaction.commit(); 
} 

bu bir ember-data veya emberjs hata mı: İşte

ArrayController yılında deleteCategory yöntemdir? Eğer değilse, burada ne yapıyorum? Bir hata ise, bir öğeyi sildikten sonra ArrayController içeriklerini yeniden yüklemek için bir yol var mı? Alternatif olarak, kategoriyi ArrayController'dan manuel olarak kaldırabilir miyim?

GÜNCELLEME 1:

İşte

Ben öğelerin listesini görüntüleyen am nasıl:

category.one("didDelete", this, function() { 
    this.set("content", App.Category.find({ 
     parent: parent_category 
    })); 
}); 

GÜNCELLEME 2: Ben onun içeriğini ayarlayarak dizi kontrolörün içeriği güncellemesi zorlamak başardı

Şablonda:

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

Teşekkür ederiz!

+0

İki not: Bunu başka tür filtrelerle test ettim ve model sorgusuna herhangi bir filtre uygulandığında başarısız olur. Sadece filtresiz çalışır, aksi halde liste güncellenmez. Ayrıca, silme tamamlandıktan sonra içeriğini ayarlayarak ArrayController'ın sorgusunu yeniden yüklemenin bir yolunu buldum. Bu şimdilik yapacak, ama bu kötü bir hack. –

+0

Benzer bir sorun yaşıyorum. Bunu hiç çözdün mü? –

+0

Sonunda, bu sorunu listede her bir öğenin yanında bulunan onay kutularını izledim. Her onay kutusu ilgili nesne üzerindeki bir özniteliğe bağlanmıştı ve listeye yüklenirken hatalı olayları tetikliyordu ve bu soruna neden oluyordu. Sorunu çözmek için onay kutularını ve onlarla ilgili olayları kaldırdım. Daha fazla ayrıntıya ihtiyacınız varsa, daha fazla kazacağım ve size bildireceğim. –

cevap

0

Artık bu, Ember Data'da bir şeyler yapmanın yolu değil. Geçiş belgesinde görüldüğü gibi artık bir işlem kullanılmaz: https://github.com/emberjs/data/blob/master/TRANSITION.md

+0

Sorumu sildim ve seninkileri kabul edemem çünkü ben sordum :) ben Taylan Pince hata yapmalısın ... – intuitivepixel

+0

Evet, her yorum "hata" doğru taşması anladım eğer, OP. .. Ne tür bir soruya başvurduğumdan emin değilim, üzgünüm, ama hepsi iyi :) Eğer eski şeyleri temizlemek istiyorsanız, ben taşma taşması can sıkıcı, ben buldum. "cevaplandı", "cevaplandı ve bu cevabı kabul edildi" anlamına gelir. –

İlgili konular