ng-bind-html无法识别ID名称

时间:2016-12-29 14:07:47

标签: ng-bind-html ngsanitize

我使用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)

提前致谢!

1 个答案:

答案 0 :(得分:0)

从故意卫生设施的元素中删除id。您可以在v1.0.0-rc2中看到导致此问题的原始提交。

提交中没有给出推理,但针对striping id's from img tags的angularjs提出的后续问题解释了这一点:

  

我们剥离idname的原因是浏览器将它们放在window

     

<div id="angular">会用元素覆盖window.angular。这被认为是一个安全问题,所以我们不允许这样做。

     

- mhevery