[Enjoy]自定义指令返回数值然后做算术运算

自定义指令baseline和diff返回数值,最终想要的是算术运算后的结果,

但是得到的是字符串拼接,请教正确的写法。

因为涉及中间计算结果,所以选择用指令。


QQ截图20200908112122.png


@hzh740053757

TemplateException: Shared method not found: baseline(java.lang.String) String template line: 1

baseline是指令不是方法,因为涉及中间计算结果(保存到scope),所以选择用指令。

1.png


函数是可以将计算结果继续参与算术运算的,但是如何在函数中得到模板的参数或者scope

1.png


评论区

hzh740053757

2020-09-08 13:23

不能这样写

daiikaku

2020-09-08 13:56

@hzh740053757 请教下正确的写法

JFinal

2020-09-08 14:06

这个问题关键在于你的需求,不知道你要实现啥功能,所以也就无从回答

daiikaku

2020-09-08 14:16

@JFinal 我没有表述清楚,2个指令返回的数值再做算术运算,即700-(-14.5)等于714.5

hzh740053757

2020-09-08 14:30

应该用方法 #(baseline(Ag) - diff(Cu))

daiikaku

2020-09-08 15:10

hzh740053757

2020-09-08 15:16

看文档 https://jfinal.com/doc/6-7

JFinal

2020-09-08 15:57

@hzh740053757 指令执行以后,要么会向 Writer 中输出数据,要么不输出,输出完以后的数据只会展现为字符串形式,是不可能再参与运算的

所以,指令扩展不是这么用的,你可以用表达式来做:
#xxx( Ag - Cu )

多看看文档中的多种扩展方式,都很方便

hzh740053757

2020-09-08 16:19

必须要指令的话 考虑用js在最外层包一下吧

hzh740053757

2020-09-08 16:20

new Function('return #baseline("Ag") - #diff("Cu")')();

daiikaku

2020-09-11 17:55

@hzh740053757 @JFinal 发现函function是可以算术运算的,现在问题是函数中如何能够得到scope里面的值。

hzh740053757

2020-09-11 19:54

是想在new Function()里取scope的值?

daiikaku

2020-09-12 08:15

@hzh740053757 对的,希望能获得传给模板的数据和通过scope在函数间传递计算得到的中间数据。

hzh740053757

2020-09-12 11:51

new Function(var a = #(中间值);var b=#baseline("Ag"); var c=#diff("Cu");return a+b+c; )

热门反馈

扫码入社