可以说,我有一个简单的应用程序,它是用 Backbone.Marionette 创建的。为简单起见,假设我有某个模型的“显示”视图(在这里无关紧要),我可以在其中单击“添加新”,这会在“模态”中显示“新”视图窗户。
我在那里显示简单的表单,它(在验证后)被发送到我的 API。在此期间,我正在显示其他视图(显示诸如“正在保存,请稍候……”之类的内容)。
如果成功,我将关闭此模式窗口,一切正常。
但是(这是棘手的部分):我想处理由于某种原因模型未保存(API 临时停机、连接问题、竞争条件等)的情况,并在另一次显示相同的视图(我认为它应该很容易) - 但是,当我这样做时,不再处理事件(即:submitForm
第二次不执行动作:()
这是我对此的概念证明:
class MyApp.SampleView extends Marionette.View
events:
"submit form": "submitForm"
submitForm: (event) ->
event.preventDefault()
data = $(event.currentTarget).serializeObject()
model = SampleModel.new(data)
if model.isValid()
MyApp.popupRegion.show(SavingPopup)
savePromise = model.save()
savePromise.success =>
@close()
@displayNotification("Model has been added")
savePromise.error =>
@displayNotification("Something went wrong, please try again")
MyApp.popupRegion.show(this) # displays correct view
# but does not handle events :(
TL;DR 版本:
如何以仍然可以处理我的事件的方式将视图重新附加到区域?