骨干:删除赢得't绑定

Backbone: Delete won't bind?

本文关键字:绑定 删除 骨干      更新时间:2023-09-26

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

看起来很简单,但我似乎无法将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'

已解决。如果其他人遇到这个问题,问题在于主干rails gem及其destroy()函数的工作方式。有一个未决的拉取请求可以解决这个问题,但它的缩写是:

  • 确保将集合传递到视图
  • 将默认destroy()代码替换为:

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

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

您可以在此处的待处理拉取请求中看到更多信息

这是怎么回事:

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