Вопрос

У меня очень простая модель и коллекция. У меня есть соответствующий backbone.marionette.collectionView и backbone.marionette.itemview, и они живут в backbone.marionette.region.

Шаблон Itemview содержит кнопку «Удалить». Событие нажатия кнопки «Удалить» выпускает модель. Destroy (). Удаление HTTP выдается на бэкэнд, но, по -видимому, его выдается дважды, и поскольку во второй раз, когда он не удается, элемент не удален из коллекции.

Все остальное работает нормально, только HTTP Delete выпускается дважды. Есть идеи, почему?

Я использую backbone.marionette версия 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
Это было полезно?

Решение

MHMM .... это действительно кажется чем -то связанным с каким -то встроенным событием или методом.

Попробуйте использовать не стандартные имена для событий и методов.

Например, вы можете попытаться переименовать метод удаления в «myrename» (удалить предварительно определенный метод костяки в представлениях и коллекциях).

как это:

 # 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

надеюсь это поможет

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top