Template Engine 实现输出#(#(name))问题

应用案例:

<input type="text" name="blog.title" value="#(blog.title??)" />

定义成模版函数,如何复用name属性实现value值根据name值获取?

效果为:

#set(name="blog.title")

<input type="text" name="#(name)" value="#(#(name))" />

现在不支持嵌套输出,请问有什么好的替代方法吗?

评论区

JFinal

2017-02-25 16:50

概然定义成了模板函数,为啥不为函数传参进来?
#define funcName(p1, p2, p3) .... #end

724261038@qq.com

2017-02-25 17:04

@JFinal 是传参,就是想重复利用name参数,不过value值不支持这样写不是?
#define funcName(name)
name="#(name)" value="#(#(name))"
#end

JFinal

2017-02-26 12:03

@724261038@qq.com 实现这个功能需要通过自定义指令扩展功能,大致是通过继承 Directive 类,并在 exec 方法中通过 scope 对象拿到值,然后将拿到的值当成 key ,再去 scope 中去拿一次值

这种用法相当于是将参数求值后的值再当成表达式去求值,不建议这么用

724261038@qq.com

2017-02-26 12:50

@JFinal 是的,谢谢!

热门反馈

扫码入社