Backbone.js编辑仅显示第一个单词的文本字段

时间:2011-10-18 18:08:31

标签: backbone.js

我在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

1 个答案:

答案 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

将在屏幕上正确显示值