我的同事Patrick&我目前正在将自动完成组件从Web UI转换为Polymer.dart。在Web UI中,我们为自动完成提供了一个HTML呈现列表,以便为程序员提供设置结果样式的机会。根据输入值,我们过滤了列表并显示了匹配结果。
您建议在Polymer.dart中实现相同的行为?我们应该以完全不同的方式处理这个问题吗?
旧的Web UI代码:
<template iterate="entry in filteredEntries">
<li class="b-autocomplete-results-li">{{ entry.sanitizedHtml }}</li>
</template>
一个条目的分类:
class AutocompleteEntry {
final String id;
final String searchableText;
final Element _element;
AutocompleteEntry(this.id, this.searchableText, this._element) {
// remove the data-id and data-text since we don't need them in the html
_element.dataset.remove('text');
_element.dataset.remove('id');
}
get sanitizedHtml {
var validator = new NodeValidatorBuilder()..allowHtml5();
var documentFragment = document.body.createFragment(_element.outerHtml, validator: validator);
return documentFragment;
}
}
答案 0 :(得分:2)
<强>更新强>
Dart Polymer 1.0的即用型元素是bwu-bind-html
不,没有。这是故意的,因为它容易发生XSS攻击。
你可以做的是改用<safe-html>
这样的元素。
我对此问题的回答HTML Tags Within Internationalized Strings In Polymer.dart显示了完整的源代码。