class Hoge
constructor: () ->
console.log "hello"
のように宣言したものをviewなどのJavaScriptから
new Hoge();
などと呼びだそうとするとそんなもんねーよと言われてしまいます。
それもそのはず、冒頭のCoffeeScriptはファイルとして
(function() {
Hoge = (function() {
function Hoge() {
console.log("hello");
}
return Hoge;
}();
}).call(this);
のように (function() {...}).call(this);で括られててしまうから外からアクセスできません。
外から呼び出すにはclass名の前に@を入れて
class @Hoge
constructor: () ->
console.log "hello"
と書けば
(function() {
this.Hoge = (function() {
function Hoge() {
console.log("hello");
}
return Hoge;
})();
}).call(this);
になるのでview側などから
new Hoge();
できるようになります。