JFinal的if和Vue的if冲突了


与Vue冲突的写法

在字符串模板中,比如 Handlebars,我们得像这样写一个条件块:

<!-- Handlebars 模板 -->
{{#if ok}}
 <h1>Yes</h1>
{{/if}}

错误信息:

[ERROR]-[Thread: qtp1418334255-30]-[com.jfinal.core.ActionHandler.handle()]: /admin/brand

com.jfinal.template.stat.ParseException: #if directive requires parentheses "()"

Template: "/_view/_admin/brand/list.html". Line: 40


要不要处理这种?难道只能用vue另外一种if判断呢?

jquery和Freemarker Velocity也经常冲突,“$”。

这种情况下,后端模版中用jQuery代替$。

---------------------

正确的不与JFina冲突的vue if 判断

<tbody id="bodyHolder">

<tr v-for="item in page.list" class="formatTrCss({rowIndex})" >

    <td>{{item.logo}}</td>

<td><span v-if="item.company">{{item.company.name}}</span></td>

<i-Button type="primary" @click="showDialog2">添加品牌2</i-Button></td>

</tr>

</tbody>


评论区

穿越123

2018-09-08 19:09

用了vue,为什么又用什么模板引擎,有必要这样吗

JFinal

2018-09-08 20:54

参考这个贴子的回复:
http://www.jfinal.com/feedback/3977

fansunion

2018-09-08 20:55

@穿越123 vue的if 被 JFinal模版识别了,产生冲突了。后端只是返回1个html页面,后续都是vue和ajax前端的东西了。

JFinal

2018-09-08 20:56

除了上述贴子中的办法以外,其实添加一个换行也能解决,因为 enjoy 引擎将 #、 name 这三者出现在同一行时才认为是指令,改成下面这样:

{{#
if ok}}
Yes
{{/if}}

fansunion

2018-09-08 20:58

@JFinal 大概看了下,先用 这种语法,后面再学习。

fansunion

2018-09-08 22:19

@穿越123 现在尝试iview的table组件, 。

之前用的是

























序号 品牌编号 名称 logo 公司 分类 创建时间 操作
{{item.rowIndex}} {{item.id}} {{item.name}} {{item.logo}} {{item.company.name}} {{item.category.name}} {{item.createTime}}
添加品牌2

placement="top" @on-change="handlePage" @on-page-size-change='handlePageSize'>

netwild

2018-09-10 10:11

我的做法是将#之类的变量先添加到vue的data里
后面的逻辑部分都使用vue的语法进行判断

fansunion

2018-09-11 16:07

@netwild jfinal模版渲染 把vue的#if 给识别 报错了。现在有办法了,vue有2种if的写法。

netwild

2018-09-11 21:58

@fansunion 不是v-if吗?还有别的写法?

fansunion

2018-09-12 09:21

@netwild v-if 和JFinal不冲突,目前用的就是这个语法。

{{#if ok}}

Yes


{{/if}}
这是另外1种。

netwild

2018-09-12 10:35

@fansunion 还真没这么用过,只知道v-if,哈哈