Frage

Ich habe ein sehr einfaches Backbone -Modell und eine sehr einfache Kollektion. Ich habe ein entsprechendes Backbone.

Die ItemView -Vorlage enthält eine "Entfernen" -Taste. Das Klickereignis der Schaltfläche Entfernen gibt ein Modell aus. Destroy (). Ein HTTP -Löschen wird dem Backend ausgestellt, es scheint jedoch zweimal ausgestellt zu werden, und da es beim zweiten Mal fehlschlägt, wird der Artikel nicht aus der Sammlung entfernt.

Alles andere funktioniert gut, nur der HTTP -Delete wird zweimal ausgegeben. Irgendeine Idee warum?

Ich benutze Backbone.Marionette Version 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
War es hilfreich?

Lösung

MHMM .... Es scheint wirklich etwas mit einer eingebauten Veranstaltung oder Methode zu tun zu haben.

Versuchen Sie, Nicht -Standard -Namen für Ereignisse und Methoden zu verwenden.

Zum Beispiel können Sie versuchen, die Entfernungsmethode in 'Myrename' umzubenennen (Entfernung ist eine vordefinierte Rückgrat-Methode in Ansichten und Sammlungen).

so was:

 # 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

hoffe das hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top