在验证错误后刷新 Backbone.js 表单(包括事件),但不重新加载页面

abithluo  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(104)

我有一个带有表单的 Backbone.js 视图。当用户提交表单时,可能会出现验证错误,这是由后端处理的。在我显示错误后,我希望表单再次可用。我想我应该这样做。delegateEvents(),但由于某种原因,它没有工作...
下面是代码:

class App.Views.PlotsCreate extends Backbone.View
  template: JST['plots/create']

    events:
        'submit #new_plot': 'createPlot'

    createPlot: (event) ->
      event.preventDefault()
      @attributes = plot: {name: $('#new_plot_name').val(), docreate: "true", code: code }
      @collection.create @attributes,
        wait: true
        success: (plot) => 
          document.body.style.cursor = 'default'
            @showProgress(plot)
        error: @handleError
      )

    handleError: (entry, response) =>
      if response.status == 422
        errors = $.parseJSON(response.responseText).errors
        for attribute, messages of errors
          $('#new_plot_name').val("#{message}" for message in messages)

    <form class="new_plot" name="create_form" id ="new_plot"  data-remote="true" enctype="multipart/form-data">
      <textarea class="input" id="new_plot_name" name="name" rows="5" maxlength = '140'></textarea> 
      <input class="blue_button btn_generate" name="commit" type="submit" value="create" id ="plot_subm"/>
    </form>

如何使表单再次正常工作(即在显示错误后再次触发提交事件)

eanckbw9

eanckbw91#

验证失败通常不会对事件绑定造成任何影响;实际上,从技术上讲,视图甚至没有validate方法,只有模型有(该方法所做的就是触发一个'error'事件并返回false)。您确定您没有破坏视图的代码吗?

相关问题