我开始使用rails和coffeescript,但现在我遇到了一个奇怪的问题。 我想创建一个名为log的函数,我在.coffee中创建了这样的函数:
log = (message) -> console.log message
它翻译成这样的js:
(function() {
var log;
log = function(message) {
return console.log(message);
};
log('Podcast downloader 2000');
}).call(this);
如果我按照我在示例中调用的方式调用该函数,则可以正常工作。 但现在我想使用onclick =“log('avb')
来调用它<span onclick="log('abc')"/>
但该函数不在正确的范围内,因此不会被调用。
如何更改代码以便我可以从onclick属性调用该函数?
谢谢!
答案 0 :(得分:4)
正如Sterling在评论部分中所建议的那样,使用onclick
并不是一个好习惯,但如果你真的需要这样做,那么将函数放在全局命名空间中
window.log = (message) -> console.log(message)
在这种情况下,最好为应用程序创建命名空间并在那里添加功能。
@MyNamespace = {}
class MyNamespace.CommonFunctions
@log = (message) -> console.log(message)
然后在你看来
<span onclick='MyNamespace.CommonFunctions.log("abc")'>
这可以保持组织有序,并且不会阻塞全局命名空间。
LISTENER APPROACH
更好的方法是使用事件侦听器(使用jquery)。
# view
<span class='msg'></span>
# js
log = (message) -> console.log(message)
$('.msg').on 'click', -> log('abc')