Yii多次加载jquery

时间:2013-05-12 19:10:55

标签: jquery yii partial-views

我目前有一个呈现6个局部视图的页面。我现在面临的问题是,因为我需要将processOutput设置为TRUE,所以jquery会被多次加载。

我尝试通过添加

解决此问题
    <?php Yii::app()->clientscript->scriptMap['jquery.min.js'] = FALSE; ?>
    <?php Yii::app()->clientscript->scriptMap['jquery.js'] = FALSE; ?>

对我的部分看法。问题是,通过这样做,jquery不会加载AT。

无论如何要解决这个问题,它只会加载一次吗?

2 个答案:

答案 0 :(得分:1)

您可以在组件数组

下的配置文件中包含以下ClientScript映射
'clientScript' => array(
        'scriptMap' => array(
            'jquery.js' => '/js/jquery.min.js', // set your path here
        ),
    ),

还要在您的<head>部分添加以下内容

Yii::app()->clientScript->registerCoreScript('jquery');

并删除视图中包含的任何其他手动jquery。你应该没事。

答案 1 :(得分:1)

将您的代码更改为:

<?php $jquery = '/js/jquery.min.js'; ?>
<?php Yii::app()->clientscript->scriptMap['jquery.min.js'] = $jquery; ?>
<?php Yii::app()->clientscript->scriptMap['jquery.js'] = $jquery; ?>

使用此方法,您可以使用资产管理器。例如:

<?php $jquery = Yii::app()->assetManager->publish(Yii::app()->theme->basePath . '/assets/jquery-1.9.1.js'); ?>
<?php Yii::app()->clientscript->scriptMap['jquery.min.js'] = $jquery; ?>
<?php Yii::app()->clientscript->scriptMap['jquery.js'] = $jquery; ?>