7

我正在为 Yii 应用程序制作一个小部件。主布局视图注册了所有常见的脚本文件,例如 jQuery 和 jQueryUI。在我的小部件中,我想使用一个 jQueryUI 插件,该插件依赖于已加载的 jQueryUI。

我知道我可以指定脚本包含在页面上的哪个位置,但是在“结束”处简单地包含它似乎有点命中注定 - 如果我有其他脚本需要在该插件之后加载怎么办?我如何确保它们以正确的顺序加载 - 有人有任何想法吗?

4

1 回答 1

11

你可以使用 Yii脚本包中的依赖特性。我之前遇到过类似的问题

例如,您有如下脚本包配置,

'clientScript' => array(
  'packages' => array(
     'package1' => array(
          'basePath' => 'path.to.package1',
          'js' => array(
              'package1.js',
          ),
          'css' => array(
              'package1.css'
          ),
      ),
     'package2' => array(
          'basePath' => 'path.to.package2',
          'js' => array(
              'package2.js',
          ),
          'css' => array(
              'package2.css'
          ),
          'depends' => array(
                'package1',
          )
      ),
     'package3' => array(
          'basePath' => 'path.to.package3',
          'js' => array(
              'package3.js',
          ),
          'css' => array(
              'package3.css'
          ),
          'depends' => array(
                'package2',
          )
      ),
   )
)

在上面的示例中,package2requires (depends)package1package3requires package2. 假设在您的情况下,一个小部件使用package2,而另一个脚本使用package3. 即使您不渲染小部件,如果您使用Yii::app()->clientScript->registerPackage('package3');,它也会自动安装package2which 然后安装package1之前的(或者如果之前某些脚本已经需要,package2则不会安装。)。package1

于 2012-06-21T02:49:32.883 回答