我在Backbone.js项目中看到了一个奇怪的错误。创建,新建,编辑和删除操作正常工作。在渲染具有文本作为属性的对象的编辑操作时,只有该文本的第一个单词显示在文本框中。在索引上,将显示全文。
奇怪的是,如果我点击“编辑”,然后确认,Backbone就会向原始文本的服务器发送一个PUT请求(而不是第一个单词,这是我在浏览器中看到的)
E.g。
使用文字“foo bar”创建帖子
索引显示:“foo bar”
编辑显示:“foo”
点击保存 - > index显示“foo bar”
Firebug确认服务器响应PUT 200 OK,"text": "foo bar"
编辑:我使用的代码非常接近backbone-rails gem
生成的样板文件在我的模板中:
<form id="edit-post" name="post">
<div class="field">
<label for="content"> content:</label>
<input type="text" name="content" id="content" value=<%= content %> >
</div>
<div class="actions">
<input type="submit" value="Update Posts" />
</div>
</form>
在我的编辑视图中
events :
"submit #edit-posts" : "update"
update : (e) ->
e.preventDefault()
e.stopPropagation()
@model.save(null,
success : (posts) =>
@model = posts
window.location.hash = "/#{@model.id}"
)
render : ->
$(this.el).html(this.template(@model.toJSON() ))
this.$("form").backboneLink(@model)
return this
答案 0 :(得分:4)
您需要在模板
中围绕您的值引用 <input type="text" name="content" id="content" value="<%= content %>" >
如果没有引号,最终会得到如下所示的标记:
<input ... value=foo bar>
单个空间在属性中很重要。这具有value="foo"
或等效的效果:
<input ... value="foo" bar>
通过在<%= content %>
的{{1}}周围添加模板中的引号,您将生成正确的HTML:
value
将在屏幕上正确显示值