鱼C论坛

 找回密码
 立即注册
查看: 3266|回复: 3

[已解决]关于template方法的使用

[复制链接]
发表于 2020-8-1 17:52:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Ootme 于 2020-8-1 17:54 编辑

1.
                var html = template('usertpl', {data: response});
                $('#userBox').html(html);

2.
    var html = template('tp1',data);
    console.log(html)
    //show
    document.getElementById('container').innerHTML=html


两个data都差不多,为什么这两个显示的方法不一样,而且不能共通
第一个是tbody标签,第二个是div标签,里面的内容都是空的
最佳答案
2023-7-19 10:21:26
原因在于:

template()方法的返回值类型不同,导致后续的渲染方式不一样。

第一个template('usertpl', {data: response})返回的是一个字符串,包含tbody和tr、td等标签。

然后通过$('#userBox').html(html)将这个字符串作为HTML代码插入到userBox这个table中,相当于直接插入tbody。

第二个template('tp1', data)返回的可能是一个DocumentFragment对象,它不是一个完整的HTML字符串,需要附加到DOM树中。

所以不能直接插入innerHTML,需要先获取一个容器节点,然后使用 container.appendChild(template()) 将DocumentFragment对象附加上去。

两者返回值类型不同,所以渲染方式不一样。

如果想统一,可以考虑:

1. 都返回字符串,然后都用innerHTML插入

2. 都返回DocumentFragment,然后都用appendChild插入

3. 用JavaScript生成DOM节点,不使用template

4. 使用更高级的框架,比如Vue、React统一渲染方式

主要还是要注意template的返回值类型,然后选择合适的渲染方法,来实现不同情况下的统一。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-1 17:52:57 | 显示全部楼层
求助。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-4 11:19:07 | 显示全部楼层
求助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-19 10:21:26 | 显示全部楼层    本楼为最佳答案   
原因在于:

template()方法的返回值类型不同,导致后续的渲染方式不一样。

第一个template('usertpl', {data: response})返回的是一个字符串,包含tbody和tr、td等标签。

然后通过$('#userBox').html(html)将这个字符串作为HTML代码插入到userBox这个table中,相当于直接插入tbody。

第二个template('tp1', data)返回的可能是一个DocumentFragment对象,它不是一个完整的HTML字符串,需要附加到DOM树中。

所以不能直接插入innerHTML,需要先获取一个容器节点,然后使用 container.appendChild(template()) 将DocumentFragment对象附加上去。

两者返回值类型不同,所以渲染方式不一样。

如果想统一,可以考虑:

1. 都返回字符串,然后都用innerHTML插入

2. 都返回DocumentFragment,然后都用appendChild插入

3. 用JavaScript生成DOM节点,不使用template

4. 使用更高级的框架,比如Vue、React统一渲染方式

主要还是要注意template的返回值类型,然后选择合适的渲染方法,来实现不同情况下的统一。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 12:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表