2012-04-01 10 views
5

これを検索したところ、うまく答えが見つからないようです。私はjQuery ajaxコールを使用していて、コールバックに応答できません。ここでコールバックメソッドから適切なスコープを取得しているCoffeescript

は私のCoffeeScriptのコードです:

initialize: (@blog, @posts) -> 
    _url = @blog.url 
    _simpleName = _url.substr 7, _url.length 
    _avatarURL = exports.tumblrURL + _simpleName + 'avatar/128' 
    $.ajax 
     url: _avatarURL 
     dataType: "jsonp" 
     jsonp: "jsonp" 
     (data, status) => handleData(data) 

handleData: (data) => 
    console.log data 
    @avatar = data 

ここでコンパイルJSです:

Blog.prototype.initialize = function(blog, posts) { 
    var _avatarURL, _simpleName, _url, 
     _this = this; 
    this.blog = blog; 
    this.posts = posts; 
    _url = this.blog.url; 
    _simpleName = _url.substr(7, _url.length); 
    _avatarURL = exports.tumblrURL + _simpleName + 'avatar/128'; 
    return $.ajax({ 
     url: _avatarURL, 
     dataType: "jsonp", 
     jsonp: "jsonp" 
    }, function(data, status) { 
     return handleData(data); 
    }); 
    }; 

    Blog.prototype.handleData = function(data) { 
    console.log(data); 
    return this.avatar = data; 
    }; 

私はダースのバリエーションを試したし、私はこれを書く方法を見つけ出すことはできませんか?

ありがとうございました。 handleData以来

答えて

2

をあなたの引数が間違っている、あなたは$.ajaxの2番目のパラメータとしてコールバックを渡しています。オプションにはsuccess:として渡すか、Ajax遅延オブジェクトに追加する必要があります。

handleDataはオブジェクトに添付されているようです(おそらくthisです)、接頭辞は@である必要があります。

URLを渡している間、APIは最初のパラメータとしてURLを渡し、2番目のパラメータとしてオプションを渡すことを提案します。

$.ajax _avatarURL, 
    dataType: "jsonp" 
    jsonp: "jsonp" 
    success: (data, status) => @handleData(data) 

OR

$.ajax _avatarURL, 
    dataType: "jsonp" 
    jsonp: "jsonp" 
.done (data) => @handleData(data) 
+0

ここと同じです** handleData **メソッドは** handleData ** – pandabrand

+0

の返り値ではなくメソッドを返すことはありません。初期化しますか?明確にするために、initializeはjQuery jqXHRオブジェクトを返します。 http://api.jquery.com/Types/#jqXHR。データが返されません。 – loganfsmyth

+0

申し訳ありませんが、あなたは正しいです、私はちょうどもう1杯のコーヒーが必要でした。 ;-) – pandabrand

2

Blogの試作品ではなく、スコープ内の変数であり、あなたはおそらくこれ欲しい:

(data, status) => @handleData(data) 
+0

メソッドが実行されることは決してありません、それだけでメソッドを返す** handleData **ないそのメソッドの実際のリターン。 – pandabrand

関連する問題