【发布时间】:2016-11-05 01:34:06
【问题描述】:
我正在为员工创建一个工具来创建“小部件”仪表板。该仪表板可以完全自定义显示的小部件、它们的位置和大小。
每个小部件都是一个 jquery 自执行函数,它可以加载创建它所需的任何内容。
我担心某些小部件可能需要从数据库中获取数据才能加载,例如保存的链接、常用电话号码等。这意味着如果用户的仪表板上有 10 个小部件,则进行 10 次 AJAX 调用(假设每个调用都需要访问数据库)。
首先,我怀疑这是首选,但不完全确定如何处理?
我的第二个担忧/问题是等待加载。在getMultipleScripts 函数中,我有一个done 的回调。这将告诉我何时获取了所有文件,以便我可以运行我的插件来启用网格功能。然而,这并不意味着每个插件都完成了它们的 AJAX 调用来获取它们的数据。有没有一种方法可以解决这个问题,以便不仅加载文件,而且每个文件都完成了初始 AJAX 调用以获取数据?
// Load an array of file names
$.getMultiScripts(moduleIncludes, 'includes/js/modules/').done(function(){
// I can trigger the jQuery plugin here to arrange the widgets into their grid format. However, just because those plugins have been fetched doesnt mean their individual AJAX calls have all been completed.
});
// Given an array of file names..
$.getMultiScripts = function(arr, path) {
var _arr = $.map(arr, function(scr) {
return $.getScript((path || "") + scr);
});
_arr.push($.Deferred(function(deferred) {
$(deferred.resolve);
}));
return $.when.apply($, _arr);
}
任何反馈的建议都是首选。虽然上述问题是我主要关心的问题,但也接受有关备用设置的反馈。
想象下面的每个块都是用户在其仪表板上的一个小部件。一个是一个简单的计算器,根本不需要与数据库交互,另一个是他们部门的链接列表。
【问题讨论】:
标签: javascript php jquery ajax widget