アクションがトリガーされた後に奇妙なエラーが発生する CoffeeScript オブジェクトがあります。
オブジェクトは問題なく読み込まれますが、コールバックをトリガーするアクションが完了すると、次のエラーが表示されます。
this.update は関数ではありません return this.update(value);
このエラーが発生した理由を知っている人はいますか? 私の推測では、jQuery.rating 呼び出し内のthisオブジェクトは、実際には rating オブジェクトではなく jQuery オブジェクトを参照していますか?
私のCoffeeScriptコードは次のとおりです。
jQuery ->
new Rating()
class Rating
constructor: ->
$('.auto-submit-star').rating
callback:
(value, link) -> @update value
update: (value) =>
$.ajax
type: 'post'
url: $('#new_rating').attr('action')
data: 'rating': value
.done ( msg ) ->
alert( msg )
コードは次のようにコンパイルされます。
var Rating,
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
Rating = (function() {
function Rating() {
this.update = __bind(this.update, this);
$('.auto-submit-star').rating({
callback: function(value, link) {
return this.update(value);
}
});
}
Rating.prototype.update = function(value) {
return $.ajax({
type: 'post',
url: $('#new_rating').attr('action'),
data: {
'rating': value
}
}).done(function(msg) {
return alert(msg);
});
};
return Rating;
})();