最近接到个任务需求,需要对原有Laravel-admin的列表页面进行一个小特效的加入(仅一个菜单栏目);
完成JS插件封装后,在正常资源加载完整时,JS插件可以进行正常的使用;
但也发现个问题,当非目标页面并没有载入指定JS插件资源文件时,再切入到目标页面,资源并没有被(以下代码)引入,这时候刷新一下当前页面,该JS资源文件才被载入到页面上;
// 参考开发文档(扩展列功能):https://laravel-admin.org/docs/zh/model-grid-column
Admin::js("/vendor/admin/Module.js");
推测可能是Pjax的问题(还没深入研究这块),以下通过另外一些方式,变相解决这个问题;
建立一个js.blade.php文件,写入,我们需要执行或引入的JS资源(例):
<script type="text/javascript" src="/vendor/admin/Module.js"></script>
<script type="text/javascript">
// 其他JS代码
</script>
再需要的页面例如控制器中的index方法(例):
public function index(Content $content)
{
return $content
->header(trans('list.index'))
->description(trans('list.description'))
->body($this->grid()) // 列表相关展示(参见官方案例:https://laravel-admin.org/docs/zh/model-grid-column)
->body(view('admin::list.js')); // 引入js视图模板
}
至此就解决了上面所遇到的问题;
灵感来源:https://blog.csdn.net/guaiguaiknl/article/details/80703679?utm_source=blogxgwz8