【问题标题】:Angular Directives - How to set attributes to innerHMLAngular Directives - 如何将属性设置为 innerHML
【发布时间】:2017-11-13 07:04:05
【问题描述】:

如何为内部 HTML 设置属性

tpl.html

<div class="my-templeate"></div>

HTML

<template></template>

指令

app.directive('template', ['$compile', function($compile) {
        return {
            restrict: "EA",
            templateUrl: './tpl.html',
            link: function($scope, $elm, $attr) {

                var elm =$elm[0].innerHTML;

                elm.attr('id', "someId");
            }
        };
    }]);

这里我想将属性设置为附加到&lt;template&gt;&lt;/template&gt; 元素的innerHtml &lt;div class="my-templeate"&gt;&lt;/div&gt;

我该怎么做?

【问题讨论】:

标签: javascript html angularjs angular-directive


【解决方案1】:

只要你有这个庞大而强大的框架供你使用,你也可以利用它。在范围内设置数据并让模板读取它,而不是绕过 Angular 自行编辑 DOM。模板:

<div class="my-template" id="{{someId}}"></div>

指令:

app.directive('template', ['$compile', function($compile) { // $compile is unnecessary here unless you're using it for something else in this directive
    return {
        templateUrl: './tpl.html',
        link: function($scope, $elm, $attr) {
            $scope.someId = "whatever";
        }
    };
}]);

一般来说,如果您在使用 Angular 时直接操作 DOM,那么您可能会以困难的方式或完全错误的方式做事。

【讨论】:

  • 谢谢,这个方法我已经知道了。我想知道。如何也这样工作。
  • 好的。我的回答是“不要那样做”。这是不必要的额外工作,并且容易导致难以追踪的错误(很容易覆盖角度绑定等)
  • 我试图不让它工作。我只是想知道如何使这项工作。感谢您的提示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 2023-03-17
相关资源
最近更新 更多