• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > Thinkphp中JS如何获取模板变量(示例详解)

Thinkphp中JS如何获取模板变量(示例详解)

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了Thinkphp模板变量,JS获取模板变量,Thinkphp示例等相关知识,希望对您有所帮助

下面给大家介绍PHP框架中JS优雅获取模板变量的方式,希望对需要的朋友有所帮助!

PHP框架中JS优雅获取模板变量的方式

在使用PHP框架(本文以ThinkPHP为例)进行页面开发的时候,经常遇到需要将控制器方法中的模板变量代入到页面JS内操作的情况,常见的方式如:

let admin={:json_encode($admin)},  //$admin是php数组    level={$level};  console.log(admin, level);

这种方式确实是可以取到值的,只是存在几个问题

模板变量的语法放在js中,编辑器会报语法错误

当采用编辑器的自动格式化功能时,模板变量的声明结构会被破坏,从而影响了自动格式化代码功能的使用

不够美观

在实践中比较推荐的方式是:将模板变量存到特定的节点中,然后由全局方法将其转成全局的变量,最后需要用到这些变量的方法再读取这些全局变量。下面以一个完整的模板为例:

<!DOCTYPE html>  <html lang ="en">  <head>   <meta charset="UTF-8">   <title>PHP框架中JS优雅获取模板变量的方式</title>   <style>   /* 通用的模板数据存放标签,视觉不可见 */  .data-box {        display: none;    }   </style>  </head>  <body>  <!-- 页面内容 -->  <h2>Hi,结果请看console</h2>   <!-- 数据存储节点,可以同时存在多个data属性 -->  <!-- 如果模板变量是数组,须先转成json字符串(如$admin) -->  <div class="data-box" data-admin='{:json_encode($admin)}' data-level='{$level}'></div>        <script>    /* 获取数据的操作 */     /* 初始化页面渲染时传过来的js变量 */  let dataContainerElem = document.querySelector('.data-box'),       data = dataContainerElem ? dataContainerElem.dataset : {},       dataBox = {}; //模板变量容器,`.data-box`类选择器所在的所有`data`属性值集合       Object.keys(data).forEach(function (key) {        dataBox[key] = data[key];        if (isJsonString(data[key])) dataBox[key] = JSON.parse(data[key]); //是json格式的字串才转对象    });      /**    * 判断字串是否属于json字串    */  function isJsonString(str) {       let flag = false;          if (typeof str != 'string') return flag;          try {           JSON.parse(str);           flag = true;       } catch (e) {}          return flag;    }  </script>     <script>    /* 使用数据 */  //所有保存到数据节点的变量都成为`dataBox`对象的属性    console.log(dataBox.admin, dataBox.level);  </script>  </body>  </html>

实际开发中,我会将这里的css和获取数据的js操作放置在全局的母模板中,然后具体的子模板只要继承了母模板就可以使用该功能,方便代码的复用。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Thinkphp中JS如何获取模板变量(示例详解)

相关文章

  • js获取UEditor富文本编辑器中的图片地址
  • 宝塔面板一键部署wordpress,网址打不开怎么办?
  • PHP使用Apache的伪静态功能实现“网页404时跳转指定页面
  • Discuz!教程之删除注释云平台JS,加快Discuz访问
  • PS打造纸张撕边效果
  • WordPress url链接去掉category的方法插件即可搞定
  • 使用css实现自适应标题浮动效果(代码实例)
  • PS绘制可爱的熊猫头像
  • Photoshop制作可口的饼干文字特效
  • Photoshop制作由云朵组成的艺术字教程

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 做好网站站内链接分配 提高网站百度指日可待
    • 浅谈conda安装nodejs版本过低问题的解决方法
    • js实现滑动进度条
    • PHP网站常见安全漏洞,及相应防范措施总结
    • 你知道Golang怎么封装PHP常用函数吗!
    • Photoshop设计水晶质感的立体盒子教程
    • 用PS制作漂亮的立体3D橙色玻璃RSS Icon图标设计教
    • PHPCMSV9单次最多只能上传10个附件的解决方法
    • WordPress常见故障有哪些?怎么处理?
    • 浅谈angular9中组件动态加载的实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有