HTML 标记在 CanJS 中使用胡须模板进行转义
HTML tags are escaped with mustache templates in CanJS
我的要求是我需要向用户显示一组选项。我使用胡须模板使用 CanJS javascript 框架渲染选项。
这里的问题是当我尝试呈现以下选项时:马铃薯 12卢比
胡须模板正在转义我的 HTML,它正在显示带有 HTML 标签的值。
我也在我的模板中使用了 {{{ }}},但它没有帮助。
请检查小提琴是否相同。
http://jsfiddle.net/arvi87/22CU8/1/
我的胡子模板:
{{#options}}
<option value="{{value}}" {{#selected}}selected{{/selected}}>{{{display}}}</option>
{{/options}}
我将数据绑定到模板的示例控件:
var frag = can.view('{{' +this.options.view+ '}}',{
/*
I am passing observe here which is escaping the HTML tags like:
Cabbage <span>Price: Rs.12</span>
*/
options: arrayObserver
/*
This is rendering properly. Not sure about what is the difference ?
Cabbage Price: Rs.12
*/
//options: array
});
我的选项数组:
var array = [{
selected: true,
display: "None"
},{
selected: false,
display: "Tomato"
},{
selected: false,
display: "Potato <span>Rs.10</span>"
},{
selected: false,
display: 'Cabbage <span>Price: Rs.12</span>'
}];
arrayObserver = new can.Observe.List(array);
任何帮助都会很棒。
谢谢。
我会不惜一切代价避免尝试将任何类型的 DOM 元素添加到您的选项元素中,因为这永远无法保证有效。
如果您查看选项标签的规范,您会发现唯一接受的内容模型要么是空,要么是文本,这意味着什么都没有或只是文本。CanJS坚持接近规范,这就是为什么它将其呈现为纯文本,因为选项只允许文本。
如果您在某些数据中遇到跨度和其他 HTML 并且无法通过任何其他方式摆脱它们,我建议您编写一个辅助函数来为您从文本中删除 HTML 标签,例如......
can.Mustache.registerHelper('displayHelper', function(display) {
var stripped = display().replace(/<[^>]*>/g, "");
return stripped;
});
并修改您的模板,使其看起来像...
{{#options}}
<option value="{{value}}" {{#selected}}selected{{/selected}}>
{{{displayHelper display}}}
</option>
{{/options}}
相关文章:
- 在JavaScript中输出转义字符
- 转义符不能与innerHTML一起使用
- 我想使用模态通过php文件发送邮件,并且我希望在提交关闭后关闭pop
- 打开一个模态并将其链接到AngularJS中的指令
- Rails 3.2 js.erb文件转义js
- 模运算符前的双水平线
- 转义在jsp's脚本
- SemanticUI模态not onDeny/onApprove事件未激发
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 如何通过所选索引(AngularJS)在模态弹出窗口中显示数据
- 包含数据库中相关信息的开放模态
- bootstrap消除模态并显示另一个模态
- 使用Jinja2的JavaScript转义字符串
- JavaScript模数未正确递增变量值
- 模态提示-如何重写此代码
- 模态框无法正常工作
- 将c#视图模型转换为javascript模型时转义HTML标记
- 将数据传递给由服务创建的Ionic模态
- iframe模态无法关闭
- HTML 标记在 CanJS 中使用胡须模板进行转义