jquery – Coffeescript从回调方法获得适当的范围

前端之家收集整理的这篇文章主要介绍了jquery – Coffeescript从回调方法获得适当的范围前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

搜索过这个并且似乎无法找到成功的答案,我正在使用jQuery ajax调用,我无法得到回调的响应.

这是我的coffeescript代码

  1. initialize: (@blog,@posts) ->
  2. _url = @blog.url
  3. _simpleName = _url.substr 7,_url.length
  4. _avatarURL = exports.tumblrURL + _simpleName + 'avatar/128'
  5. $.ajax
  6. url: _avatarURL
  7. dataType: "jsonp"
  8. jsonp: "jsonp"
  9. (data,status) => handleData(data)
  10. handleData: (data) =>
  11. console.log data
  12. @avatar = data

这是编译好的JS:

  1. Blog.prototype.initialize = function(blog,posts) {
  2. var _avatarURL,_simpleName,_url,_this = this;
  3. this.blog = blog;
  4. this.posts = posts;
  5. _url = this.blog.url;
  6. _simpleName = _url.substr(7,_url.length);
  7. _avatarURL = exports.tumblrURL + _simpleName + 'avatar/128';
  8. return $.ajax({
  9. url: _avatarURL,dataType: "jsonp",jsonp: "jsonp"
  10. },function(data,status) {
  11. return handleData(data);
  12. });
  13. };
  14. Blog.prototype.handleData = function(data) {
  15. console.log(data);
  16. return this.avatar = data;
  17. };

我已经尝试了十几个变种,我无法弄清楚如何写这个?

谢谢.

最佳答案
您的参数不正确,您将回调作为第二个参数传递给$.ajax.您应该将其作为成功传递:在选项中,或将其添加到Ajax延迟对象.

由于handleData看起来像是附加到一个对象,很可能是这个,你需要用@作为前缀.

虽然您传递URL的方式有效,但API现在建议将URL作为第一个参数传递,将选项作为第二个参数传递.

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

要么

  1. $.ajax _avatarURL,dataType: "jsonp"
  2. jsonp: "jsonp"
  3. .done (data) => @handleData(data)

猜你在找的jQuery相关文章