关于 #define 指令 同名模版怎么确定使用的是哪个?

在页面中看到一个地方应该是调用了一个paginate()模板函数,全页中只有一处引入了模版函数就是下图中第一行的#@adminlayout()使用模版指令.png

所以去寻找定义的adminlayout(),但是全篇中都没有找到对应的paginate方法的定义

图片.png

在页面的最后找到一个#@js?()

图片.png一开始的页面 和 搜索到的另一个页面中都有定义 #define js() ,jfinal是如何找到正确的呢?是如何找的呢?

图片.png

图片.png

评论区

netwild

2018-07-17 15:57

adminlayout()是母版页
里面会默认调用@main、@css、@js等模板函数
但这些模板函数不是在adminlayout()里定义的
而是在调用adminlayout()的目标页面里定义,然后adminlayout()拿过来直接用

另外那个paginate()不是模板函数,只是一个js函数

JFinal

2018-07-17 16:51

#@adminLayout()、#define main()、#define js()、#define js() 仅仅当成是函数定义与调用就极其好理解了

然后 engine.addSharedFunction(...) 可以将模板中的 #define xxx() 定义的函数给搞成全局可用的,所以你的 #@adminLayout() 这个函数调用看似在本模板中没有定义,也没有使用 #include 引入,但仍然可以直接调用

至于 paginate 这个函数是纯 js 的事情,是纯前端的事,与后端完全无关

让我说点啥呢

2018-07-17 16:56

@netwild 谢谢答疑

让我说点啥呢

2018-07-17 16:57

@JFinal 谢谢波总解惑

JFinal

2018-07-17 17:00

@让我说点啥呢 你的页面内容中出现黄色波浪线,可以用这里办法配置一下解决:
http://www.jfinal.com/doc/6-2

让我说点啥呢

2018-07-17 17:57

热门反馈

扫码入社