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
È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top