描述从回调方法获取正确的作用域
Coffeescript getting proper scope from callback method
我已经搜索过了,似乎找不到成功的答案,我使用的是jQuery ajax调用,无法获得对回调的响应。
这是我的咖啡脚本代码:
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;
};
我试了十几种变体,但我不知道该怎么写?
谢谢。
您的参数不正确,您将回调作为第二个参数传递给$.ajax
。您应该在选项中将其作为success:
传递,或者将其添加到Ajax延迟对象中。
由于handleData看起来像是附加到一个对象上,该对象很可能是this
,因此需要在它前面加上@
。
虽然传递URL的方式有效,但API现在建议将URL作为第一个参数传递,将选项作为第二个参数传递。
$.ajax _avatarURL,
dataType: "jsonp"
jsonp: "jsonp"
success: (data, status) => @handleData(data)
或
$.ajax _avatarURL,
dataType: "jsonp"
jsonp: "jsonp"
.done (data) => @handleData(data)
由于handleData
在Blog
的原型中,而不是作用域中的变量,因此您可能需要以下内容:
(data, status) => @handleData(data)
相关文章:
- 在put方法之前从作用域获取数据
- 在函数中获取正确的作用域(不使用that=this)
- JavaScript通过名称获取当前作用域中的变量
- 为什么我的作用域函数没有获取从模型传递的数据
- 无作用域指令-如何获取数据
- 获取作用域中变量的第 n 个名称
- 角度 - 从作用域变量中获取 ng 模型名称
- AngularJs 作用域 - 如何正确从 DOM 获取作用域
- 描述从回调方法获取正确的作用域
- 无法在内容脚本Firefox Addon中获取作用域
- 使用this from函数在作用域上获取/设置角度变量
- AngularJS:Can't将变量的值从ctrl作用域获取到指令中
- AngularJS-获取一个输入值并将其传递给父指令作用域
- Angularjs:获取指令中另一个控制器内定义的控制器中作用域变量的值
- 如何在promise解析时手动将promise的结果获取到作用域变量中
- 获取套接字.来自外部作用域的IO作用域
- 动态添加或复制指令不会从父作用域获取变量值
- 从外部作用域获取函数参数计数
- 从指令中的独立作用域获取作用域变量
- 使用隔离作用域获取隐藏按钮的属性