0

我有一个使用 ajax 加载页面部分的页面。每个部分都由一个 html 文件和一个 javascript 文件组成,该文件只为那部分 html 定义事件。

我想做的是想出一种管理文件加载的方法,该方法可以将两个文件绑定在一起。

这是我现在如何尝试使其工作的伪代码,但我不知道是否有更有条理的方式。

伪代码:(使用jquery)

  1. 循环浏览需要加载的 html/js 文件对列表。
  2. 将一个对象添加到唯一标识这对文件的数组中。该对象最终将保存 html 和 js 对象的容器
  3. 开始加载html。当html返回时,将内容追加到页面中,并将id记录在数组对象中
    • 这很容易,因为我直接使用 jquery get 回调的内容。
  4. 开始加载js。当文件加载时,js 执行并使用对文件返回值的引用更新数组中的对象。
    • *这是最难的部分。jQuery.getScript() 完成后会自动执行脚本,所以我不能使用返回值,因为它已经创建了。因为我不能使用 ajax 响应,所以我必须让 js 文件知道它将自己添加到的对象

所以,我希望有一些 js lib 已经可用,可以在 html 和 js 对之间进行一些数据绑定。

另外,我不确定如何构建对象管理器。js 文件中的每个对象都将具有相同的事件绑定,当您移动到该部分时会调用这些事件。

抱歉,这是一个加载的问题。

4

1 回答 1

0

我认为我的 AJAX 库可能会有所帮助:

http://depressedpress.com/javascript-extensions/dp_ajax/

最有用的功能之一是能够定义具有多个“调用”(单个 HTTP 调用)的单个“请求”(触发单个处理程序)。因此,您可以定义一个请求以同时包含对脚本的调用和对 HTML 的第二次调用。当两个调用都完成时,定义的处理程序将被调用并以正确的顺序将结果传递给它。

用于处理请求的请求池可以使用多个背景对象(允许多线程)进行实例化,这样当请求在调用处理程序之前获取所有数据时,它们不会被迫通过单线程浪费时间(尽管您可以这样做如果您愿意,也可以这样做)。

这是一个如何使用它的简单示例:

    // The handler function
function AddUp(Nums) { alert(Nums[1] + Nums[2] + Nums[3]) };

    // Create the pool
myPool = DP_AJAX.createPool();

    // Create the request
myRequest = DP_AJAX.createRequest(AddUp);

    // Add the calls to the request
myRequest.addCall("GET", "http://www.mysite.com/Add.htm", [5,10]);
myRequest.addCall("GET", "http://www.mysite.com/Add.htm", [4,6]);
myRequest.addCall("GET", "http://www.mysite.com/Add.htm", [7,13]);

    // Add the request to the pool
myPool.addRequest(myRequest);

“myRequest”定义了处理程序。addCall() 方法添加多个调用。一旦所有三个结果都将作为三个响应的数组发送到处理程序(与添加调用的顺序相同)。

您可以成对调用您的文件,甚至可以将它们全部捆绑到一个请求中 - 由您决定。

希望这可以帮助!

于 2012-09-20T02:06:34.997 回答