我有一个名为窗体视图呈现无论是形式编辑列表,或列表本身,取决于传递什么参数来渲染。我添加了事件处理程序,以便显示/编辑模式可以切换。我已经从下面的代码中解决了这个问题,以保持简单,但是这只是为View提供了一些背景知识。Backbone.js的事件处理程序触发多次
我可以实例化这个表单视图作为另一种观点认为一个孩子,需要一个形式,或者该列表被渲染,这是我的新观点,它会被渲染为一种形式所做的一切。
当我需要拯救,我称之为形式:保存事件,这将触发程序在保存表单的形式来看,我只是做它调用的console.log这里要说明它的工作原理。在我的代码中,我通过一个$('a#submit')。call的form:save来绑定一个由ApplicationView插入的导航按钮(但我认为这对于这个问题的目的不重要)。
可以说,我从导航新观点了,我回去给它的次数。当我点击保存时,该方法运行我实例化并呈现新窗体视图的次数。
到目前为止:
我试着做解除绑定()和remove()中从没有运气的新形式来看视图close方法。
我想我可能在确定范围时遇到问题,但我不确定。
我知道这与我的导航绑定无关。
我认为这可能与僵尸视图有关。
任何使它只运行一次的指针?
App.Views.New = Support.CompositeView.extend
initialize: (options) ->
_.bindAll this, 'render'
@model = new App.Models.Item()
render: ->
self = this
form = new App.Views.Form model: @model, collection: @collection
@$el.append form.render().el
setTimeout (->
$('a#submit').click (e) ->
e.preventDefault()
App.eventHandler.trigger 'form:save'
), 0
this
App.Views.Form = Support.CompositeView.extend
initialize: ->
_.bindAll this, 'render', 'save'
App.eventHandler.on 'form:save', @save
render: ->
self = this
# RENDER TEMPLATE HERE
this
save: ->
console.log 'form saved'
,我认为你是在一个经典的僵尸视图问题,但是我不太明白在这个窗体被销毁之后调用这个新的视图。或者在表单范围内? – 2012-07-23 14:57:44