Yii2.0 js函数未定义

最近在使用Yii2.0框架开发,为了提高开发效率直接使用了一套Yii2.0的后台模板。调试js时,发现js里写的函数都找不到,仔细排查之后发现了问题在于Yii2框架代码块的问题。
Yii2的代码里js被包在一个Block里,如下所示:

<script>
<?php $this->beginBlock('js_end') ?>
//js代码
<?php $this->endBlock() ?>
</script>
<?php $this->registerJs($this->blocks['js_end'], yii\web\View::POS_LOAD) ?>

这段代码的意思是把script标签中的js代码看成是一个以js_end为名的js文件,在页面中加载进来。那么为什么会报错js未定义呢?是registerJs函数的第二个参数起了作用,它决定了这段js代码的加载顺序。
registerJs的第二个参数可以是以下:

POS_HEAD:head结束标签之前

POS_BEGIN:body开始标签之后

POS_END:body结束标签之前

POS_READY:页面加载完成之后

原来是我们在页面加载完成之后才加载js,Block内的函数就成了window.onload里的函数,作用域在此局部,外部无法获取。因此我们需要将其放到全局作用域中。
我使用了比较简单粗暴的方法,直接将定义Block及注册js的语句删掉即可。
谢谢你长得这么好看,还这么耐心地看到这。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值