Angular.js / jQuery html字符串解析在1.9.1和1.8.3中

时间:2013-04-20 15:40:15

标签: javascript jquery angularjs jquery-1.9 jquery-1.8

尝试angular.element(stringWithHtmlStructure);原因

Error: Syntax error, unrecognized expression: <div id="foo">bar</div>

在jquery 1.9.1中,但它适用于jquery 1.8.3

是问题还是功能?安全一个或许?我该如何处理?

1.8.3示例http://plnkr.co/edit/ZYYKIixcYzOL46hq0puS?p=preview 1.9.1示例http://plnkr.co/edit/ETmQMY8KoCP0gaKdSrMD?p=preview

这绝对不是任何角度内容的问题,正如$(stringWithHtmlStructure)失败一样,你可以在这里看到http://plnkr.co/edit/FqvOKZ62t0IJ57cT05ew?p=preview

2 个答案:

答案 0 :(得分:8)

问题肯定在于jquery 1.9.1

  

带有前导空格的HTML字符串:jQuery 1.9限制字符串   出于安全原因由$()处理。虽然我们建议您使用   $ .parseHTML()处理任意HTML模板,1.1.0   版本的Migrate插件可恢复旧的行为。

处理它的方法是使用任何类型的修剪功能,无论是jquery的$ .trim还是下划线修剪甚至是你自己的修剪。

请注意,只有在尝试使用$ templateCache中的模板时才会出现此问题,如果您在指令上使用模板或templateUrl attr它工作正常,我猜角度内部修剪它。

答案 1 :(得分:3)

如果您的字符串包含前导空格,则应将其删除。

这应该有效:

angular.element($.trim(stringWithHtmlStructure));