Backbone.marionette Model.destroy. Проблема
-
26-10-2019 - |
Вопрос
У меня очень простая модель и коллекция. У меня есть соответствующий 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
надеюсь это поможет