1

对页面上的所有实例只运行一次初始化小部件的代码时遇到一些问题。

这是我的情况...

我必须在小部件初始化期间加载 JS 文件。目前我在内部_create()方法中执行此操作。但是当我尝试在页面上放置 2 个或更多实例时,小部件会尝试多次加载相同的 JS 文件。这当然不好......所以我需要一些同步机制。

任何想法如何更好地同步它?

我正在考虑一些机制,它允许在加载的某些智能 JS 的页面上为所有小部件的实例只运行一次代码,不会两次加载相同的文件,并且只是控制加载过程并在过程中通知所有感兴趣的部分完成了。

更新

在小部件中加载一些 JS 文件实际上存在 2 个问题:

  1. 仅加载文件一次
  2. 通知所有小部件的实例 JavaScript 代码已准备好使用

JS 文件中的 JavaScript 代码可能会在小部件初始化期间使用,因此我需要通知小部件它已正确加载并准备好使用。

4

1 回答 1

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 并检查它是否存在于你的页面上。

于 2013-11-15T01:03:45.853 回答