一尘不染

将AngularJS变量绑定到CSS语法中

angularjs

我试图弄清楚如何将AngularJS范围变量绑定到CSS语法中。我认为问题出在花括号中。这是我基本上想做的事情:

<style>.css_class {background:{{ angular_variable }}; color:#ffffff;}</style>
<style>.css_rule {background:{{ "#000000" }}; color:#ffffff;}</style>
<style>.css_rule {background:{{ var | someFilter }}; color:#ffffff;}</style>

关于如何实现这一目标的任何想法?谢谢!


阅读 493

收藏
2020-07-04

共1个答案

一尘不染

如此处所述
angular不会在样式标签内的内容上运行。在那篇文章中有一个解决方法,但是作为一种更灵活的方法,我只是创建一个指令来获取内容,解析它们并替换:

更新的答案

app.directive('parseStyle', function($interpolate) {
    return function(scope, elem) {
        var exp = $interpolate(elem.html()),
            watchFunc = function () { return exp(scope); };

        scope.$watch(watchFunc, function (html) {
            elem.html(html);
        });
    };
});

用法:

<style parse-style>.css_class {color: {{ angular_variable }};}</style>

http://jsfiddle.net/VUeGG/31/


原始答案

app.directive('parseStyle', function()
{
    return function(scope, elem)
    {
        elem.html(scope.$eval('\'' + elem.html() + '\''));
    };
});

然后:

<style parse-style>.css_class {color: ' + angular_variable + ';}</style>

尽管不确定浏览器对此是否支持。

http://jsfiddle.net/VUeGG/4/

2020-07-04