Kendo Grid内联三元模板:非空显链接空值显错误文本实现方法
前置说明:请忽略代码中的语法偏差,已知href属性内的部分转义字符未正常显示,实际代码中已包含这些转义字符。
已知可行的基础写法
- 列中渲染带链接的数值:
template: '<a class="whatever" href="#"> #=value#'
- 兼容null值、不渲染空链接:
template: '<a class="whatever" href="#"> #=value !=null ? value: ""#'
目标需求
使用同类纯内联模板语法实现效果,不单独编写判断函数:
- value非空时:渲染带链接的value值
- value为null时:直接渲染非链接形式的错误提示文本
现存问题
仅渲染粗体值或错误提示的写法可正常运行:
template: ' #=value !=null ? <strong>value</strong> : "Invalid Entry"#'
但将粗体value替换为a标签链接后,尝试单引号、双引号、#标识的多种包裹组合均无效,错误写法示例:
// 该写法存在语法错误,无法正常运行 template: ' #=value !=null ? <strong><a class="whatever" href="#"> #=value#</strong> : "Invalid Entry"#'
问题原因
报错核心是模板解析规则冲突:#= ... #包裹的区块是纯JavaScript执行上下文,区块内不能直接裸写HTML标签,也不能嵌套第二层#=插值标记,否则模板引擎会将内部的#识别为区块结束边界,打断JS表达式解析,触发语法错误。
正确实现
直接在JS表达式块内通过字符串拼接输出HTML即可,无需额外定义函数:
// 基础版:非空显示链接,空值显示错误提示 template: '#= value != null ? "<a class=\"whatever\" href=\"#\">" + value + "</a>" : "Invalid Entry" #'
如果需要保留粗体样式,直接将strong标签拼入字符串即可:
// 带粗体样式版本 template: '#= value != null ? "<strong><a class=\"whatever\" href=\"#\">" + value + "</a></strong>" : "Invalid Entry" #'
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

