2012-02-16 9 views
3

나는 매우 간단한 백본 모델과 컬렉션을 가지고있다. 해당 backbone.marionette.CollectionView 및 backbone.marionette.ItemView가 있으며 백본 .marionette.region에 있습니다.Backbone.Marionette model.destroy issue

ItemView 템플릿에는 "제거"버튼이 있습니다. 제거 단추의 click 이벤트는 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 
+0

그런가을하는 데 도움이됩니다. 이벤트 및 메소드에 대해 비표준 이름을 사용하십시오. 예를 들어 'myRename'에서 remove 메소드의 이름을 바꿀 수 있습니다 (remove는 미리보기 및 콜렉션에서 미리 정의 된 백본 메소드입니다). –

+0

Daniele, 당신은 틀림없이 옳습니다. 나는 실제로 해결책을 찾아 냈다. (Derick Bailey와의 나의 전환을 https://github.com/derickbailey/backbone.marionette/issues/25에서 보아라.) 그러나 당신이 대답으로 당신의 이전 코멘트를 게시하고 싶다면 나는 그것을 행복하게 틱 할 것이므로 당신은 신용을 얻는다. 다시 한번 감사드립니다. –

+0

오케이, 나는 우리가 해결책을 내리게되어 기쁘다. 답은 게시물에서 따릅니다. 감사합니다 –

답변

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 

희망이 정말 이벤트 또는 방법에 내장 일부에 관련된 무언가를 seemas ....

+3

FWIW : 이제이 문제는 마리오네트 문제 목록에 문서화되어 있습니다. 그 이유는 '제거'메서드를 호출 한 이유는 다음과 같습니다. https://github.com/derickbailey/backbone.marionette/issues/25 –

+0

.. Marionette에 대한 repo가 ​​옮겨 졌으므로 Derick과 관련된 문제도 있습니다. 이제 https://github.com/marionettejs/backbone.marionette/issues/25에 있습니다. – alxndr