Yii2未捕获的ReferenceError:$未定义

时间:2017-12-31 16:45:25

标签: jquery yii2 bundle

MyAssetset:

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
    ];
    public $js = [
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
        'yii\web\JqueryAsset'
    ];
}

MyMain.php已注册此资产:

AppAsset::register($this);

在我的test.php中使用jquery

<div class="container">
<div class="row">
    <div class='col-sm-6'>
        <div class="form-group">
            <div class='input-group date' id='datetimepicker1'>
                <input type='text' class="form-control" />
                <span class="input-group-addon">
                    <span class="glyphicon glyphicon-calendar"></span>
                </span>
            </div>
        </div>
    </div>
    <script type="text/javascript">
        $(function () {
            $('#datetimepicker1').datetimepicker();
        });
    </script>
</div>
</div>

有这个错误:

  

未捕获的ReferenceError:$未定义

希望你们能帮助我。谢谢!

2 个答案:

答案 0 :(得分:0)

这是yii2的默认AppAset.php(此示例用于后端)

  <?php
  /**
   * @link http://www.yiiframework.com/
   * @copyright Copyright (c) 2008 Yii Software LLC
   * @license http://www.yiiframework.com/license/
   */

  namespace backend\assets;

  use yii\web\AssetBundle;

  /**
   * @author Qiang Xue <qiang.xue@gmail.com>
   * @since 2.0
   */
  class AppAsset extends AssetBundle
  {
      public $basePath = '@webroot';
      public $baseUrl = '@web';
      public $css = [
          'css/site.css',
      ];
      public $js = [
      ];
      public $depends = [
          'yii\web\YiiAsset',
          'yii\bootstrap\BootstrapAsset',
      ];
  }

正如您所看到的,没有引用jquery,因为这通常由yii2 Asset bundle管理

尝试将此内容用于Appset.php(最终使用您需要的命名空间),并引用其他jquery资产和我们的寄存器。 这在高级模板

中正常工作

答案 1 :(得分:0)

您应该通过资产使用javascript脚本或使用方法registerJs这里是示例

<?php $this->registerJs('$(function () { $(\'#datetimepicker1\').datetimepicker();});', View::POS_END); ?>