Yii2.0 js函数未定义

来源:互联网 发布:putty远程复制windows 编辑:程序博客网 时间:2024/05/29 18:51

最近在使用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的语句删掉即可。
谢谢你长得这么好看,还这么耐心地看到这。

原创粉丝点击