Coffeescript Coffescript未编译有效的源代码
我正在调用此函数并在此处获取错误:Coffeescript Coffescript未编译有效的源代码,coffeescript,Coffeescript,我正在调用此函数并在此处获取错误:data:{key:node.parent.data.key}saing“Unexpected{”。是否有错误。因为我找不到错误 $("#discipline-list", @el).dynatree({ fx: { height: "toggle", duration: 100 }, initAjax: { url: "/disciplines", data: { mo
data:{key:node.parent.data.key}
saing“Unexpected{”。是否有错误。因为我找不到错误
$("#discipline-list", @el).dynatree({
fx: { height: "toggle",
duration: 100 },
initAjax: {
url: "/disciplines",
data: { mode: "funnyMode" }
},
onLazyRead: (node) ->
console.log(node);
node.appendAjax({url: "/disciplines_details",
data: { key: node.parent.data.key }
});
});
我不知道到底是什么错,但更规范的写作方式是
node.appendAjax
url: "/disciplines_details"
data:
key: node.parent.data.key
对于这样的编译错误,请始终首先转到并查看它是如何被解析的。这使得在大多数情况下修复非常简单和快速。Coffee脚本不喜欢将匿名对象属性放在同一行上。添加一个换行符可修复此问题
$("#discipline-list", @el).dynatree({
fx: { height: "toggle",
duration: 100 },
initAjax: {
url: "/disciplines",
data: { mode: "funnyMode" }
},
onLazyRead: (node) ->
console.log(node);
node.appendAjax({
url: "/disciplines_details",
data: { key: node.parent.data.key }
});
});
编辑:如何将js转换为咖啡脚本
$("#discipline-list", @el).dynatree
fx:
height: "toggle"
duration: 100
initAjax:
url: "/disciplines"
data:
mode: "funnyMode"
onLazyRead: (node) ->
console.log node
node.appendAjax
url: "/disciplines_details"
data:
key: node.parent.data.key
转到并粘贴js(根据您的版本更正)
你最终会得到一个结构良好的咖啡剧本
$("#discipline-list", @el).dynatree
fx:
height: "toggle"
duration: 100
initAjax:
url: "/disciplines"
data:
mode: "funnyMode"
onLazyRead: (node) ->
console.log node
node.appendAjax
url: "/disciplines_details"
data:
key: node.parent.data.key
同一行上的对象属性混淆了解析器:
node.appendAjax({url: "/disciplines_details",
只需将url
移动到下一行,它就可以工作了:
node.appendAjax({
url: "/disciplines_details",
也就是说,您仍然在编写javascript
空白在coffeescript中很重要(即,您不能缩小它)。正确的缩进是必要的,而此代码完全错误。修复缩进,去掉逗号和分号:
$("#discipline-list", @el).dynatree({
fx: {
height: "toggle"
duration: 100
}
initAjax: {
url: "/disciplines",
data: { mode: "funnyMode" }
}
onLazyRead: (node) ->
console.log(node)
node.appendAjax({
url: "/disciplines_details"
data: { key: node.parent.data.key }
})
})
然后像@Billy的最后一个示例一样,继续去掉括号和括号。如果您不舒服,您应该尝试使用普通javascript一段时间。此外,如@jkbr所示,它可以删除大量语法,以使其在coffee脚本中更具可读性