我正在通过Rails Railscast上的Backbone学习Backbone.js。在第2部分第325集中,他们将$('#new_entry')[0].reset()
添加到entries_index.js.coffee文件中(见下文)。这应该在表单添加到列表后清除表单中的文本。我正在使用Rails版本4.0.0。
class Raffler.Views.EntriesIndex extends Backbone.View
template: JST['entries/index']
events:
'submit #new_entry': 'createEntry'
initialize: ->
@collection.on('reset', @render, this)
@collection.on('add', @appendEntry, this)
render: ->
$(@el).html(@template(entry: @model))
@collection.each(@appendEntry)
this
appendEntry: (entry) ->
view = new Raffler.Views.Entry(model: entry)
@$('#entries').append(view.render().el)
createEntry: (event) ->
event.preventDefault()
@collection.create name: $('#new_entry_name').val()
$('#new_entry')[0].reset()
我在localhost上重新加载页面时遇到这些错误:
ExecJS::RuntimeError in Main#index
SyntaxError: unexpected CALL_START
(in /Users/lionelramos/Documents/raffler/app/assets/javascripts/views/entries/entries_index.js.coffee)
我的日志有:
ActionView::Template::Error (SyntaxError: unexpected JS
(in /Users/lionelramos/Documents/raffler/app/assets/javascripts/views/entries/entries_index.js.coffee)):
我的索引模板(index.jst.eco)很小:
<h1>Raffler</h1>
<form id="new_entry">
<input type="text" name="name" id="new_entry_name">
<input type="submit" value="Add">
</form>
<ul id="entries"></ul>
答案 0 :(得分:0)
尝试在方法调用周围显式添加括号和/或围绕对象参数使用大括号,如this issue中所示。
具体来说:
@collection.create({ name: $('#new_entry_name').val() })
根据我在js2coffee.org的测试:
# this parses
action key: "value", variable
# while this doesn't
action key: "value", some_function()
答案 1 :(得分:0)
我很尴尬地说这个错误与event.preventDefault()上的缩进有关。我有几个空格和一个标签,而不是2个标签。有趣的时光!