骨干:删除不会绑定?

时间:2012-01-06 01:54:45

标签: javascript backbone.js coffeescript

我正在尝试绑定我的一个主干视图,这样,当删除模型时,它也会从不同的视图中删除。

看起来很简单,但我似乎无法将destroy方法绑定到视图。我可以绑定到更改或新模型,但删除只是不触发。我记得隐约读到一些关于绑定到删除的怪癖的东西,但是我不记得它是什么,或者更重要的是,如何绕过它。

任何想法都赞赏。简而言之,如果有人能提供将删除调用绑定到以下相关代码的示例:

来源视图

class BackboneDemo.Views.Tasks.ShowView

  # ...
  events:
    "click #mark_task_completed" : "markAsCompleted"
    "click #delete_task" : "destroy"


  destroy: () ->
    $('#contentArea').html('')
    $('#contentWrapper').css('display', 'none')
    @model.destroy()
    this.remove()
    return false

编辑:仍然没有快乐。我在下面添加了更多代码,以准确显示问题所在

模型

class MyModel extends Backbone.Model
  # ...

  destroy: () ->
    console.log 'this is getting hit'
    super

目标视图

class TargetView extends Backbone.View
  # ...
  initialize:() ->
    _.bindAll(@, 'destroy', 'testmethod', 'render')
    @model.bind('destroy', @testmethod)

  testmethod: () ->
    console.log 'but this is not getting hit'

2 个答案:

答案 0 :(得分:2)

解决。如果其他人遇到这个问题,问题在于使用backbone-rails gem以及它的destroy()函数是如何工作的。有一个待处理的拉取请求可以解决问题,但缺点是:

  • 确保将集合传递给视图
  • 用以下代码替换默认的destroy()代码:

    destroy :() - >   getViewAndCollection =((view) - > return - > {collection:@ options.collection,view:@})(@)

    @ model.destroy()   成功:(模特,回应) - >     vars = getViewAndCollection()     vars.collection.remove模型     vars.view.remove()    错误:(模型,响应) - >      #无论你想要什么错误功能

您可以在待处理的拉取请求here

中查看更多内容

答案 1 :(得分:0)

这是怎么回事:

MyView = Backbone.View.extend({
    initialize: function(){
        this.model.bind('destroy', this.remove(), this)
    }

})