【问题标题】:Backbone Coffeescript Save Success FunctionBackbone Coffeescript 保存成功函数
【发布时间】:2014-06-30 14:39:00
【问题描述】:

我正在尝试在我创建的主干基本调查应用程序的保存调用中实现成功功能,以帮助我学习主干。在用户完成最后一个问题后,将创建一个新的完成。我的服务器只允许用户进行一次调查,因此当用户尝试提交相同的完成时,会返回 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)

【问题讨论】:

    标签: javascript backbone.js coffeescript


    【解决方案1】:

    您是立即调用成功函数,而不是稍后引用它来执行。试试这样的:

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

    【讨论】:

    • 问题是在添加 -> 或 => 时似乎根本没有调用成功函数。我想知道我的部分问题是否试图同时学习主干和咖啡脚本:)。
    • 您是从服务器返回 JSON 吗?可能是即使在 201 中它也没有看到它成功。但是,是的,看看你是否可以先让它在 JS 中工作并从那里开始可能会很好。无论哪种方式,您都已经按照我的建议指定了您的功能。
    【解决方案2】:

    你可以试试这样的。

    @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 操作以及视图内部的模型操作。它会让你的生活变得很轻松。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      相关资源
      最近更新 更多