Backbone.Marionette problema model.destroy
-
26-10-2019 - |
Domanda
Ho molto semplice modello spina dorsale e la raccolta. Ho un corrispondente backbone.marionette.CollectionView e backbone.marionette.ItemView e vivono in un backbone.marionette.region.
Il modello ItemView contiene un pulsante "Rimuovi". L'evento click del pulsante di rimozione emette un model.destroy (). Un HTTP DELETE è rilasciato al backend, ma sembra essere emesso due volte e perché la seconda volta non riesce, l'elemento non viene rimosso dalla raccolta.
Tutto bene altro sta lavorando, solo l'HTTP DELETE emesse due volte. Qualsiasi idea del perché?
Sto usando Backbone.Marionette versione v0.4.5
# Model:
class User extends Backbone.Model
idAttribute: "_id"
# Collection
class Users extends Backbone.Collection
model: app.User
url: "/someUrl/Users"
# CollectionView
class UserListView extends Backbone.Marionette.CollectionView
tagName: "ul",
itemView: app.UserItemView
# ItemView
class UserItemView extends Backbone.Marionette.ItemView
template: "#item"
tagName: "li"
events:
"click .edit": "edit"
"click .remove": "remove"
remove: ->
@model.destroy()
edit: (e) ->
alert JSON.stringify @model
Soluzione
mhmm .... sembra davvero qualcosa legato a qualche costruzione evento o metodo.
Provare a utilizzare i nomi non standard per gli eventi e metodi.
Per esempio si potrebbe tentare di rinominare il metodo remove in 'myRename' (remove è un metodo spina dorsale pre-definiti nelle viste e collezioni).
in questo modo:
# ItemView
class UserItemView extends Backbone.Marionette.ItemView
template: "#item"
tagName: "li"
events:
"click .edit": "edit"
"click .remove": "myRemove"
myRemove: ->
@model.destroy()
edit: (e) ->
alert JSON.stringify @model
Spero che questo aiuti