我使用ng-bind-html并使用类名提取HTML,但ID名称都缺失了。造成这种情况的原因是什么?
实际代码示例:
service partial example
var assets = {
'sampleInvoice': '<div id="invoice-div"><table id="invoice-table-id" cellspacing="0" cellpadding="0" border="0"><tbody>......
}
controller portion:
$scope.invoiceDetails = function(params) {
console.log("Here I am ");
var modalInstance = $uibModal.open({
templateUrl: 'invoice-details-modal',
controller: 'invoiceDetailsCtrl',
windowClass: 'invoice-details-modal',
resolve: {
invoice: function resolveInvoiceTemplate($q) {
return $q.resolve($templateCache.get("sampleInvoice"));
}
}
});
HTML部分
<div ng-bind-html="invoice"></div>
它生产的是什么:
<div><table cellspacing="0" cellpadding="0" border="0"><tbody><tr valign="top"><td><table cellspacing="0" cellpadding="0" border="0"><tbody><tr><td class="invoice-logo-td"><div class="invoice-logo">....
请注意,类名存在,但是ID已经消失了。现在,我可以将所有的id切换为类,但似乎它应该能够识别id名称。
有谁知道为什么会这样? (是的,我注入了ngSanitize)
提前致谢!
答案 0 :(得分:0)
从故意卫生设施的元素中删除id。您可以在v1.0.0-rc2中看到导致此问题的原始提交。
提交中没有给出推理,但针对striping id's from img tags的angularjs提出的后续问题解释了这一点:
我们剥离
id
和name
的原因是浏览器将它们放在window
上
<div id="angular">
会用元素覆盖window.angular
。这被认为是一个安全问题,所以我们不允许这样做。- mhevery