3

私は非常にシンプルなバックボーン モデルとコレクションを持っています。対応する backbone.marionette.CollectionView と backbone.marionette.ItemView があり、backbone.marionette.region に住んでいます。

ItemView テンプレートには、「削除」ボタンが含まれています。削除ボタンのクリック イベントは、model.destroy() を発行します。HTTP DELETE がバックエンドに発行されますが、2 回発行されたように見えます。2 回目は失敗したため、アイテムはコレクションから削除されません。

他のすべては正常に機能しており、HTTP DELETE が 2 回発行されているだけです。理由はありますか?

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 に答える