对于页面上的所有实例仅运行一些初始化小部件的代码有一些问题。
这是我的情况......
我必须在小部件初始化期间加载JS文件。目前我在_create()
方法中执行此操作。但是当我尝试在页面上放置2个以上的实例时,widget会尝试多次加载相同的JS文件。那当然不好......所以我需要一些同步机制。
任何想法如何更好地同步它?
我正在考虑一些机制,允许在一些智能JS加载的页面上为所有窗口小部件的实例运行一些代码,这些实例不会加载相同的文件两次,只是控制加载过程并通知所有感兴趣的部分当过程结束时。
更新:
在窗口小部件中加载一些JS文件实际上有两个问题:
可以在窗口小部件初始化期间使用JS文件中的JavaScript代码,因此我需要通知窗口小部件它已正确加载并准备好使用。
答案 0 :(得分:0)
我不确定我是否理解了您的需求,所以我希望这会有所帮助:
var pluginName = "MyPlugin";
$.fn[pluginName] = function ( options ) {
if(!$.data("body", "alreadyLoadedFile"))
{
//load your file
$.data("body", "alreadyLoadedFile", true);
}
return this.each(function () {
if (!$.data(this, 'plugin_' + pluginName)) {
$.data(this, 'plugin_' + pluginName,
new Plugin( this, options ));
}
});
};
主要思想是使用dom元素上的数据(如body标签),或者给你的js文件一个id并检查它是否存在于你的页面上。