enjoy和传入js变量作为参数问题

有个逻辑需求

需要js变量作为参数传入enjoy的shardMethod中

<script>
         var v = "123"
         alert('#(message('+v+'))')
</script>

这样是直接报空指针的

然后我又尝试

<script>
         var v = "123"
         #set(_v = v)
         alert('#(message(_v))')
</script>

也不行

我再尝试

#define test(v)
    #(message(v))
#end

<script>
         var v = "123"
         #@test(v)
</script>

3种方式都报空指针,传入的值始终为空,不知道有什么办法可以解决吗

评论区

JFinal

2017-08-30 17:31

enjoy 渲染出来的值可以让 js 去用,反之则不行,例如:
alert('#(message('+v+'))');
上面代码中的 v, 仅仅会被 enjoy 看成是一个表达式的标识符而已,前方的 var v ="123" 是否存在完全感知不到,因为模板引擎的工作模式只能顾指令和表达式,此外的一切都只当成是纯文本

简单说,在模板引擎看来,一切 js 代码内容全是纯文本。 知道了上述原理,就知道了 js 中的所有东东是不可能让 enjoy 感知到的

yjjdick1990

2017-09-04 20:58

恩,明白了,我本来是想直接拿js的值出来用enjoy传给后台做读取文本的操作,现在只能一个个if else判断了,也没什么好的方案

yuwen01

2020-06-04 15:31

@JFinal 有什么办法可以解决enjoy反之不行问题,如果能够解决,我1行enjoy代码可以抵上10行ajax代码

yuwen01

2020-06-04 15:32

@JFinal 有什么办法可以解决enjoy反之不行问题,如果能够解决,我1行enjoy代码可以抵上10行ajax代码,因为反之不行,我总得用ajax去解决js跟后台数据交互问题

JFinal

2020-06-04 15:39

@yuwen01 用 enjoy 的 #define 封装一些常用的函数,里头放一些常用的 js 代码