2014-07-03 41 views
1

如何创建一个指令让我访问内联样式标记中的$ scope对象?Angular inline CSS

我需要的是像这样:

<style> 
    p { 
     font-size: {{userSetting.fontSize}} 
     margin: {{userSetting.margin}} 
    } 
</style> 

我已经开始为它的指令工作,但无法弄清楚如何创建它。

+0

好像你正在寻找在错误的方向,你可以操纵的DOM而不是CSS类,你应该薄添加和移除类元素的条款在DOM –

+0

内联样式是自定义的,并且由用户决定,因此它可以是边距:10px或边距:55px - 这取决于用户。这就是为什么我需要让他们内联而不是上课。 – n83

回答

0

所以...虽然我不认为这是一个好主意。你可以用一个指令完成它:

<ng-style-definition> 
    h1 { 
    color: {{h1.color}}; 
    } 
</ng-style-definition>``` 

app.directive('ngStyleDefinition', function($timeout){ 
    return { 
    restrict: 'E', 
    replace: true, 
    transclude: true, 
    template: '<style ng-transclude></style>', 
    link: function(scope, element, attr){ 
     $timeout(function(){ 
     element.html(element.children().text()) 
     }, 0) 
    } 
    } 
}) 

你可以得到一个小吸尘器将在$解析或$插值服务,但多数民众赞成它的要点。

几个例子可以看这里:http://plnkr.co/edit/eqmFho55YckE5wmYHdJB?p=preview

+0

谢谢 - 我会将其标记为正确的答案,因为它会将我引向正确的道路。为什么它不是一个好主意?其背后的逻辑是用户可以设计自己的页面,并且使用内联样式来实现它。我认为这会比在元素本身上创建样式要快,例如ngStyle – n83

+0

我想这确实取决于应用程序的上下文。 –