为什么设置了laytpl分割符 在table中没有生效?求大神告知

提问 已结 7 378
kerrygao
kerrygao 2019-11-14
悬赏:20飞吻
版本:layui 浏览器:



变成了 这个样子 好像table中的 分隔符 没有生效
回帖
  • 这个应该是你对laytpl的设置开始结束符方法的理解有误区。这个方法它的作用是说后面解析的时候以你自定义的分割符作为边界符去解析模板的内容,它不会对已经存在的模板语句有什么修改,也做不到,也就是说如果存在其他的分割符写的模板,执行了laytpl.config修改边界符之后,后面解析的时候就会出乱子了,所以个人感觉这个方法实际的应用意义不大,得做一定的处理才能发挥它的作用;还有要看你做这个操作是为了处理什么问题,如果只是不习惯的话建议还是习惯习惯采用默认的就行,如果是为了解决跟其他的语言的冲突,这个你可以试试看我之前做的测试例子中的这种方式。
    var laytpl = layui.laytpl;
    var tplTemp = '你好! <%d.name%> v<%layui.v%> ';

    var layuiTpl = function (template, data, callback, open, close) {
    laytpl.config({
    open: open || '{{',
    close: close || '}}'
    });
    var htmlTemp = laytpl(template).render(data, callback);
    laytpl.config({
    open: '{{',
    close: '}}'
    });
    return htmlTemp;
    };

    // layer.msg(layuiTpl(tplTemp, {name: 'Layui'}, null, '<%', '%>'));

    layer.open({
    type: 1,
    skin: 'layer-top',
    area: '100%',
    offset: 't',
    time: 3000,
    anim: 5,
    shade: 0,
    title: false,
    closeBtn: false,
    content: layuiTpl(tplTemp, {name: 'Layui'}, null, '<%', '%>'),
    success: function (layero, index) {
    layero.find('.layui-layer-content').append('<i class="layui-icon layui-icon-close" onclick="layer.close(' + index + ')" style="float: right;cursor: pointer;"></i>')
    },
    resize: false

    });
    大概思路就是封装一个方法,支持传入自定义的边界符,然后执行的时候先将分割符给换成自定义的,然后解析模板返回结果,之后把分割符设置会原始的{{}}让已存在的组件内部的tpl语句解析的时候不会出问题。可以试试看。
    0 回复
  • kerrygao
    2019-11-14
    查看了 table的源码 发现分隔符 怎么是写死在代码中的啊?
    0 回复
  • IDyun
    2019-11-14
    在这个回调方法里可以设置
    https://www.layui.com/doc/modules/table.html#async
    ,parseData: function(res){ //res 即为原始返回的数据
    laytpl.config({
    open: '<%',
    close: '%>'
    });
    return res;
    }
    0 回复
  • Microanswer
    2019-11-14
    这就很有意思了
    0 回复
  • c299
    2019-11-14
    模板引擎不是这样用的,你写了个模板,需要先渲染成真正的html语句,再使用 https://www.layui.com/doc/modules/laytpl.html#use
    0 回复
  • kerrygao
    2019-11-14
    @岁月小偷 谢谢 我这个之所以修改边界符 是因为他和 后端模板引擎 jinja2 冲突了。目前我的解决办法是 修改table源码中写死的边界符。功能目前看来正常!
    0 回复
  • SQJean
    2019-11-14
    [微笑]
    0 回复