2

我有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);      
    });
});
4

1 回答 1

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 文档,了解如何在define()函数中使用依赖项。

define()您应该为每个必需的模块在内部的函数中添加一个参数。在示例情况下,这是top参数。之后,您可以使用此参数调用需求模块的所有导出属性。

于 2012-07-04T10:22:23.817 回答