我正在做一个Yii应用的Widget。 主要布局视图注册所有常见的脚本文件如jQuery和jQueryUI的。 在我的小工具我想用一个jQueryUI的插件,它依赖于jQueryUI的已经加载。
我知道我可以指定包含脚本的页面上,但它似乎有点碰运气简单地包括它在“终端” - 如果我有我需要该插件后,加载其他脚本? 如何确保他们以正确的顺序加载 - 任何人有任何想法?
我正在做一个Yii应用的Widget。 主要布局视图注册所有常见的脚本文件如jQuery和jQueryUI的。 在我的小工具我想用一个jQueryUI的插件,它依赖于jQueryUI的已经加载。
我知道我可以指定包含脚本的页面上,但它似乎有点碰运气简单地包括它在“终端” - 如果我有我需要该插件后,加载其他脚本? 如何确保他们以正确的顺序加载 - 任何人有任何想法?
您可以使用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',
)
),
)
)
另外,在上述样品中, package2
需要(取决于) package1
和package3
需要package2
。 让我们在你的情况说,一个小部件使用package2
,和其他脚本使用package3
。 即使你不渲染小工具,如果你使用Yii::app()->clientScript->registerPackage('package3');
,它会自动安装package2
,然后安装package1
之前package2
(或者如果不会安装package1
已经被一些脚本之前需要)。