将CSS注入指令

时间:2016-03-14 12:46:04

标签: javascript html css angularjs

我有一个指令,我想为该指令注入一些CSS。

由于同一页面中可能有多个指令,我想避免多次注入该CSS。我应该使用什么方法? .run.config

另外,我究竟会如何注入CSS?

为了这个例子,让我们说我只想注入.my-item { background: blue; }

1 个答案:

答案 0 :(得分:1)

您可以通过执行以下操作以角度添加一些生成的CSS:

angular.element(document).find('head').prepend('<style type="text/css">.my-item { background: blue; }</style>');

为了确保不会多次注入,您可以创建一个服务CssSvc,它可以跟踪生成的CSS是否已经注入。

app.service('CssSvc', function () {
    var svc = this;

    // keep track if injected
    svc.injected = false;

});

然后,您可以将服务注入到您的指令中,并且仅在尚未运行的情况下运行上述代码。

if(!CssSvc.injected) {
    angular.element(document).find('head').prepend('<style type="text/css">.my-item { background: blue; }</style>');
    CssSvc.injected = true;
}