thinkphp,外部JS如何获取模板绑定的变量值

我是一只前端,最近初学thinkphp,刚遇到一个问题,觉得值得分享一下。欢迎吐槽 ~

场景是这样的:
我要用JS调用Controller里面的某个方法获取json数据,我便使用thinkphp的U方法,发现一直报错。

首先,我们先弄清楚thinkphp的U方法。
thinkphp函数详解-U方法

代码是这样的:

//common.js里ajax获取远程数据
remote: '{:U(\'Equipment/a\')}?q=%QUERY '

报错是这个:

clipboard.png

很明显是{:U()} 这个方式不能被正确解析。为什么呢?
thinkphp官网的截图是这么说的:
如果要在模板中调用,就采用 {:U( )}的方式。

clipboard.png

我排查很久,终于明白,原来是因为外部JS不能直接获取模板绑定的变量值。上面中U方法详解中有讲到,在模板中(即view)采用{:U( )}的方式,但是,前端的编码规范是把JS/CSS独立出来,尽量不要放在HTML代码里(HTML代码在view里),于是我就放在public里。然后便出现了上述出现的问题。模板只是display了那个HTML,不包括我的外部文件,外部JS没有被渲染,thinkphp目前也没有机制去解决这个引入外部文件渲染问题。

可以用这种方法来解决。
我在view模板里,用一个隐藏的input,然后value里面设置我要的参数

<input type="hidden" id = "a" value="{:U(\'Equipment/a\')}">

然后在JS里面获取改input的value,然在组装好自己需要跳转的URL

    var aUrl = $('#a').val();
    var aUrlP = aUrl + "?q=%QUERY";
    
    remote: aUrlP;

这样就好了。可以实现外部JS获取模板中绑定的变量值。
我觉得方法虽然行得通,但是还是会出现代码冗余,期待有更好版本的TP出现。
实属原创,如有错误,敬请指教!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值