Mam ArrayController którego treść jest zdefiniowana w trasie tak:Lista nie aktualizowane po deleteRecord
App.UsersRoute = Ember.Route.extend({
model: function() {
return App.User.find();
},
setupController: function(controller, model) {
this._super(controller, model);
this.controllerFor('application').set('currentRoute', 'users');
}
});
I listy danych w szablonie:
<ul>
{{#each user in arrangedContent}}
<li>
{{user.lastName}} {{user.firstName}}
{{#linkTo "users.edit" user class="btn btn-primary btn-small"}}EDIT{{/linkTo}}
</li>
{{/each}}
</ul>
To działa dobrze.
Jeśli utworzyć nowy element, zostanie on automatycznie dodany do listy w szablonie:
App.UsersNewRoute = Ember.Route.extend({
model: function() {
return App.User.createRecord({firstName: '', lastName: ''});
}
});
Ale kiedy usunąć element w widoku „edytuj”, to nie działa:
App.UsersEditController = Ember.ObjectController.extend({
...
destroy: function() {
this.get('content').deleteRecord();
this.get('store').commit();
this.transitionToRoute("users.index");
}
});
Ale w widoku "nowy", jeśli usunę nowo utworzony element, działa (bez zatwierdzenia).
W edytorze edycji, jeśli usunę "zatwierdzenie", lista zostanie zaktualizowana, ale kiedy wykonam kolejną akcję, lista zostanie ponownie załadowana, a usunięty element ponownie pojawi się (normalnie).
Jak usunąć element?
UWAGA: Używam "głównego" kodu danych embers i ember, odświeżonego właśnie teraz.
Już napotkałem ten sam rodzaj problemu. Przypuszczam, że jeśli odświeżysz stronę, usunięty element już tu nie będzie? Chociaż podczas zatwierdzania istnieje odpowiedź serwera, która wciąż zawiera ten rekord? –
TAK! To jest błąd. W serwerze railsowym zwróciłem zniszczony obiekt z "render json: user". Z "render json: zero, status:: ok", jest OK! Wielkie dzięki. –
Dobrze :), rzeczywiście jest to dość trudny do śledzenia błąd. Ten sam rodzaj zachowania może nadejść, jeśli utworzysz/usuniesz dziecko i zmodyfikujesz rodzica w tym samym czasie. (W przypadku hasMany/belongs) 2 żądania trafiają na serwer, ale modyfikacja rodzica jest uruchamiana przed usunięciem dziecka.W rezultacie, w przypadku danych Ember, gdy przychodzi odpowiedź rodzica, zawsze ma ono dziecko ... bum ... –