2013-10-08 10 views
6

Mam rozszerzony program podany w tym stackoverflow answer, aby mieć program, który usuwa wszystkie rekordy naraz. Jednak usunięcie odbywa się tylko w partiach i nie usuwa wszystkiego naraz.Jak usunąć wszystkie rekordy powiązane z modelem ember bez usuwania lokalnego magazynu?

Oto fragment opisu funkcji, której używam w tym artykule: JSBin.

deleteAllOrg: function(){ 
    this.get('store').findAll('org').then(function(record){ 
    record.forEach(function(rec) { 
     console.log("Deleting ", rec.get('id')); 
     rec.deleteRecord(); 
     rec.save(); 
    }); 
    record.save(); 
    }); 
} 

Jaki jest pomysł, w jaki sposób można zmodyfikować program, aby wszystkie zapisy można było jednocześnie usunąć?

Próbowałem również model.destroy() i model.invoke ("deleteRecords"), ale nie działają.

Każda pomoc jest bardzo doceniana. Dzięki za pomoc!

Odpowiedz

14

Wywołanie deleteRecord() w obrębie forEach przerwie pętlę. Można to naprawić poprzez owinięcie kod kasowania w Ember.run.once funkcji takich jak to:

this.get('store').findAll('org').then(function(record){ 
    record.content.forEach(function(rec) { 
     Ember.run.once(this, function() { 
      rec.deleteRecord(); 
      rec.save(); 
     }); 
    }, this); 
    }); 

Zobacz this jsBin.

+0

Dziękuję bardzo! Działa świetnie! :) – user2431285

+0

Cieszę się, że mogę pomóc! – chopper

+7

W dzisiejszych czasach możesz wywołać 'this.get ('store'). FindAll ('org'). Invoke ('destroyRecord')', aby je usunąć. –

Powiązane problemy