【问题标题】:Coffeescript variable concatenation causes "Uncaught TypeError value is not a function"Coffeescript 变量连接导致“未捕获的 TypeError 值不是函数”
【发布时间】:2017-10-24 18:35:12
【问题描述】:

我正在 Rails 中创建一个使用 ActionCable/Websockets 的应用程序,并且我正在使用 coffeescript 使用从 ActionCable 中的当前通道接收到的数据来更新用户浏览器。当我运行此代码时,我收到错误“未捕获的 TypeError:data.user.name 不是函数”,但是当我交换 data.user.id 和 data.user.name 时,错误是针对 data.user.id。我认为我的语法是错误的,但我找不到任何答案。任何帮助,将不胜感激。谢谢

received: (data) ->
  $('#players-table').show()
  $('#players-table-body').append '<tr>' + 
    '<td>' + data.user.id + '</td>' + 
    '<td>' + data.user.name +'</td>'

【问题讨论】:

    标签: javascript ruby-on-rails coffeescript


    【解决方案1】:

    这听起来很奇怪,但你需要在最后一个 + 后面加一个空格:

    received: (data) ->
      $('#players-table').show()
      $('#players-table-body').append '<tr>' + 
        '<td>' + data.user.id + '</td>' +
        '<td>' + data.user.name + '</td>'
    

    没有它,它会使data.user.name 打开括号并放在+'&lt;/td&gt;' 内,例如:

    return $('#players-table-body').append('<tr>' + '<td>' + data.user.id + '</td>' + '<td>' + data.user.name(+'</td>'));
    

    【讨论】:

    • 很好用,如果其他人有同样的问题,我刚刚编辑了标题。
    • 是的,谢谢,我确实标记了它,但说我必须等待 10 分钟
    猜你喜欢
    • 1970-01-01
    • 2017-05-15
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2020-09-05
    • 2016-11-06
    • 1970-01-01
    相关资源
    最近更新 更多