gpt4 book ai didi

javascript - Backbone Save() 不发送帖子

转载 作者:行者123 更新时间:2023-12-03 12:26:10 24 4
gpt4 key购买 nike

我是 Backbone 的新手,所以希望我只是错过了一些简单的东西。我正在构建一个简单的调查创建/调查应用程序来处理嵌套模型等。我正在为后端运行一个 Restful Rails 服务器。

不过,我正在努力将调查模型保存到服务器。看起来并没有真正发生发布请求,因此它实际上没有得到更新。我缺少什么想法吗?

调查模型:

class SurveyMe.Models.Survey extends Backbone.Model

调查编辑 View :

 class SurveyMe.Views.SurveyEdit extends Backbone.View

template: JST['templates/surveys/survey_edit']

initialize: ->
@model.on('all', @render, this)

events: {
'click #back': 'back'
'submit #survey': 'update'
}

render: ->
$(@el).html(@template(survey: @model))
this

back: ->
Backbone.history.navigate("surveys",true)

update: ->
@model.set("title", $('#title').val())
@model.set("survey_limit", $('#survey_limit').val())
@model.save()
Backbone.history.navigate("surveys",true)

调查编辑模板:

<h1>Edit Survey</h1>
<form id="survey">
<div class="input-group">
<span class="input-group-addon">Title:</span>
<input id="title" type="text" class="form-control" value="<%= @survey.get('title') %>">
<br>
</div>
<br>
<div class="input-group">
<span class="input-group-addon">Desired Responses:</span>
<input id="survey_limit" type="text" class="form-control" value="<%= @survey.get('survey_limit') %>">
<br>
</div>
<hr>
<button class="btn" id="back">Back</button>
<input type="submit" class="btn" id="update" value="Update">
</form>

编辑:添加索引/路由器/集合

索引:

class SurveyMe.Views.SurveysIndex extends Backbone.View

template: JST['templates/surveys/index']

events:
'submit #survey':'createSurvey'

initialize: ->
@collection.on('reset', @render, this)
@collection.on('add', @addSurvey, this)

render: ->
$(@el).html(@template())
@collection.each(@addSurvey)
console.log(@collection.length)
this

addSurvey: (survey) ->
view = new SurveyMe.Views.Survey(model: survey)
@$('#surveys').append(view.render().el)

createSurvey: ->
console.log("Survey created")

路由器:

class SurveyMe.Routers.Surveys extends Backbone.Router
routes:
'surveys/:id': 'edit',
'surveys': "index"

initialize: ->
@collection = new SurveyMe.Collections.Surveys()
@collection.fetch(reset: true)

index: ->
view = new SurveyMe.Views.SurveysIndex(collection: @collection)
$("#container").html(view.render().el)

edit: (id) ->
survey = @collection.get(id)
view = new SurveyMe.Views.SurveyEdit(model: survey)
$("#container").html(view.render().el)

集合:

class SurveyMe.Collections.Surveys extends Backbone.Collection

model: SurveyMe.Models.Survey

url: '/surveys/'

最佳答案

这里大胆猜测,但这可能是因为您在 CoffeeScript 中使用了简单的箭头而不是粗箭头:

update: ->
@title = $('#title').val()
@survey_limit = $('#survey_limit').val()
this.save()

您将从偶数进入此方法,这意味着 this 的作用域为事件触发器而不是模型。使用粗箭头:

update: =>

应该没问题...

关于javascript - Backbone Save() 不发送帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24197293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com