mirror of https://github.com/layui/layui
修复 table 表头属性 `templet` 使用模板字符串时,一些特殊的自定义 laytpl 界定符被转义的问题 (#1438)
* 修复 table 表头属性 `templet` 使用模板字符串时,一些特殊的自定义 laytpl 界定符被转义的问题 例如使用 `<% %>` 作为界定符时,`<` 和 `>` 会被转义 close https://gitee.com/layui/layui/issues/I8L3OC * 优化 table 模板解析 * 回退pull/1447/headbd2994e
中对 table 模板函数类型的改动 revert·bd2994ec3a
BREAK CHANGE 1.模板字符串最外层包裹 div 时的行为不同,现在由 laytpl 直接处理,会保留最外层的 div,估计影响比较小 2.不再支持 jQuery 特有的选择器,几乎无影响
parent
7c12ddfdf3
commit
cc880885a0
|
@ -77,6 +77,16 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
|
|||
return config || null;
|
||||
};
|
||||
|
||||
// lay 函数可以处理 Selector,HTMLElement,JQuery 类型
|
||||
// 无效的 CSS 选择器字符串,会抛出 SyntaxError 异常,此时直接返回 laytpl 模板字符串
|
||||
var resolveTplStr = function(templet){
|
||||
try{
|
||||
return lay(templet).html();
|
||||
}catch{
|
||||
return templet;
|
||||
}
|
||||
}
|
||||
|
||||
// 解析自定义模板数据
|
||||
var parseTempData = function(obj){
|
||||
obj = obj || {};
|
||||
|
@ -97,9 +107,9 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
|
|||
if(templet){
|
||||
content = typeof templet === 'function'
|
||||
? templet.call(item3, obj.tplData, obj.obj)
|
||||
: laytpl($(templet).html() || String(content)).render($.extend({
|
||||
LAY_COL: item3
|
||||
}, obj.tplData));
|
||||
: laytpl(resolveTplStr(templet) || String(content)).render($.extend({
|
||||
LAY_COL: item3
|
||||
}, obj.tplData));
|
||||
}
|
||||
|
||||
// 是否只返回文本
|
||||
|
|
Loading…
Reference in New Issue