2016-03-04 70 views
-1

我正在学习用轨从here反应错误。在下面的教程我canme到这个错误 ExecJS::RuntimeError in Records#index SyntaxError: [stdin]:41:13: cannot have an implicit value in an implicit object为什么标签空间导致咖啡脚本

然后从谷歌的一点点研究,我来了解错误是因为标签空间。

检查该反应的js代码:

@RecordForm = React.createClass 
 
    getInitialState: -> 
 
    title: '' 
 
    date: '' 
 
    amount: '' 
 
    render: -> 
 
    React.Dom.form 
 
     className: 'form-inline' 
 
     React.DOM.div 
 
     className: 'form-group' 
 
     React.DOM.input 
 
      type: 'text' 
 
      className: 'form-control' 
 
      placeholder: 'Date' 
 
      name: 'date' 
 
      value: @state.date 
 
      onChange: @handleChange 
 

 
     React.DOM.div 
 
      className: 'form-group' 
 
      React.DOM.input 
 
      type: 'text' 
 
      className: 'form-control' 
 
      placeholder: 'Title' 
 
      name: 'title' 
 
      value: @state.title 
 
      onChange: @handleChange 
 
     React.DOM.div 
 
      className: 'form-group' 
 
      React.DOM.input 
 
      type: 'number' 
 
      className: 'form-control' 
 
      placeholder: 'Amount' 
 
      name: 'amount' 
 
      value: @state.amount 
 
      onChange: @handleChange 
 
     React.DOM.button 
 
      type: 'submit' 
 
      className: 'btn btn-primary' 
 
      disabled: [email protected]id() 
 
      'Create record' 
 

 
    handleChange: (e) -> 
 
    name = e.target.name 
 
    @setState "#{ name }": e.target.value 
 

 
     valid: -> 
 
     @state.title && @state.date && @state.amount 
 

 
    handleSubmit: (e) -> 
 
    e.preventDefault() 
 
    $.post '', { record: @state }, (data) => 
 
     @props.handleNewRecord data 
 
     @setState @getInitialState() 
 
    , 'JSON' 
 

 
    render: -> 
 
    React.DOM.form 
 
     className: 'form-inline' 
 
     onSubmit: @handleSubmit

删除空格'Create record'之前,从上面的脚本会解决这个问题。您可以通过此utility(link)

+0

缩进定义了CoffeeScript中的结构,因此您必须非常小心且与之一致。 –

回答

1

检查,你应该在2种方式申报的对象和你的编译器不能决定使用哪种人。

,以避免这样的错误你是选择的每个声明中的方法的最佳途径之一。

# First way 
obj = 
    a : 1 
    b : 2 

# First way (compact) 
obj = a : 1, b : 2 

# Second way 
# vars and props with same names (compact) 
a = 1; b = 2 
obj = { 
    a 
    b 
} 

# Second way (compact) 
a = 1; b = 2 
obj = {a, b} 

您还可以使用React JSX support for Coffeescript

更新:

让我们看看更接近你的代码。

您可以发送两个参数那样。

React.DOM.button 
    type  : 'submit' 
    className : 'btn btn-primary' 
    disabled : [email protected]() 
    , 'Create record' 

或者像那样。 输入对象和非对象的组合编译成两个参数。

type  : 'submit' 
    className : 'btn btn-primary' 
    disabled : [email protected]() 
    'Create record' 

And what you do in your code编译器尝试发送Object {'Create record' : 'Create record'}作为参数调用到的[email protected]()结果。

React.DOM.button 
    type: 'submit' 
    className: 'btn btn-primary' 
    disabled: [email protected]() 
    'Create record' 
+0

我仍然没有得到为什么这不工作 '''' React.DOM.button 类型: '提交' 的className: 'BTN BTN-主' 禁用:@Valid() “创建记录 '前 '''' 但去掉空格'''' 创建record''''工作正常。 – Kumar

+0

检查我的第一篇文章。 Markdown的''''在注释中不起作用 – Kumar

+0

根据您的代码添加示例 – Nikita