我需要调用函数bar
。我是新手使用回调,据我所知,回调仍然在ajax的范围内,所以它看不到bar
。是否有可能在ajax成功时调用bar? bar
在模块top
中定义。
define(["top"], function() {
function foo(callback) {
$.ajax({
type: "GET",
cache: false,
dataType: 'json',
url: "http://asdf/qwer",
success: function(response) {
callback(response);
}
});
}
foo(function(response) {
bar(response);
});
});
答案 0 :(得分:2)
假设您的top.js
看起来与此相似:
define( function() {
return {
'bar': function( data ){
// some code here
}
};
} );
(注意,这里必须导出/返回该功能!)
您可以像这样访问bar()
功能:
define(["top"], function( top ) {
function foo(callback) {
$.ajax({
type: "GET",
cache: false,
dataType: 'json',
url: "http://asdf/qwer",
success: function(response) {
callback(response);
}
});
}
foo(function(response) {
top.bar(response);
});
});
请参阅require.js doc on working with dependencies inside a define()
function。
您应该为define()
内的每个必需模块的函数添加一个参数。在示例中,这是top
参数。然后,您可以使用此参数调用需求模块的所有导出属性。