2011-10-18 53 views
0

我看到我的Backbone.js项目有一个奇怪的错误。创建,新建,编辑和删除操作正常工作。在为文本作为属性呈现对象的编辑操作时,只有该文本的第一个单词显示在文本框中。在索引上显示全文。Backbone.js编辑文本字段只显示第一个字

奇怪的是,如果我点击“编辑”,然后只是确认,骨干向服务器发送一个PUT请求与原始文本(而不是只有第一个字,这是我在浏览器中看到的)。

E.g.

与文本 “富巴”

指数显示创建帖子: “富巴”

编辑表示: “富”

点击保存 - >指数显示, “富巴”

萤火虫确认服务器回应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

一些代码或说明问题的jsFiddle将是非常棒的。 –

+0

刚刚完成,我会尽快更新模板并查看代码。感谢您的建议 –

回答

4

您在模板需要围绕你的价值的报价

<input type="text" name="content" id="content" value="<%= content %>" > 

没有引号,你最终会看到标记像这样:

<input ... value=foo bar> 

单个空间在属性中很重要。这具有value="foo"效果还是这个equivalen:

<input ... value="foo" bar> 

通过模板中添加引号,则<%= content %>各地为value,你会产生正确的HTML:

<input ... value="foo bar"> 

这将显示正确的值,在屏幕上

相关问题