Backbone Coffeescript保存成功功能

时间:2014-06-30 14:39:00

标签: javascript backbone.js coffeescript

我正在尝试在我的骨干基础调查应用程序中的保存调用中实现成功函数,我正在创建它以帮助我学习主干。用户完成最后一个问题后,将创建一个新的完成。我的服务器只允许用户进行一次调查,因此当用户尝试提交相同的完成时,将返回500内部错误,注意未完成调查。

问题是成功函数似乎在响应为201和500时都被调用。任何想法我需要如何更改我的保存功能,以便仅在响应为201时才调用成功而不是500?

updateQuestion: ->
    if @questionNumber < @questionLimit
      @questionNumber += 1
      $("#container").html(@render().el)
      choice = new SurveyMe.Models.Choice
      choice.save(
        choice:
          appuser_id: Cookie.get('survey_user_id')
          question_id: @model.get('questions')[@questionNumber]["id"]
          answer_id: "4"
      )
      @renderQuestion()
    else
      completion = new SurveyMe.Models.Completion
      completion.save(
        {
        completion:
          survey_id: @model.get('id')
          appuser_id: Cookie.get('survey_user_id')
        },
        success: 
          @model.save(
            number_taken: @model.get('number_taken') + 1
          )
      )
      Backbone.history.navigate("surveys",trigger: true)

2 个答案:

答案 0 :(得分:1)

您正在立即调用成功函数,而不是将其引用以便稍后执行。尝试这样的事情:

success: (res) =>
  @model.save(number_taken: @model.get('number_taken') + 1)

答案 1 :(得分:0)

你可以尝试这样的事情。

@statusCode = PostData:->
    @save({completion:{"yourValues"},
        success:=>
            @SaveOtherInformation()  
         )

@saveOtherInformation:->
    //Perform the other 'Save' if the status code is according to your server response.

    @save() if @statusCode is "201"

我建议你尝试将视图与模型分开,避免模型中的dom操作,以及视图中的模型操作。它会让你的生活变得轻松。