我正在尝试绑定我的一个主干视图,这样,当删除模型时,它也会从不同的视图中删除。
看起来很简单,但我似乎无法将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'
答案 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)
}
})