3

我有非常简单的主干模型和集合。我有一个相应的backbone.marionette.CollectionView 和backbone.marionette.ItemView,他们住在一个backbone.marionette.region。

ItemView 模板包含一个“删除”按钮。删除按钮的点击事件发出一个model.destroy()。向后端发出 HTTP DELETE,但它似乎发出了两次,并且因为第二次失败,该项目没有从集合中删除。

其他一切工作正常,只是发出了两次 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
4

1 回答 1

5

嗯....看起来确实与某些内置事件或方法有关。

尝试对事件和方法使用非标准名称。

例如,您可以尝试重命名“myRename”中的 remove 方法(remove 是视图和集合中预定义的主干方法)。

像这样:

 # 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

希望这可以帮助

于 2012-02-17T16:17:08.227 回答