Angularjs 角度内联CSS

Angularjs 角度内联CSS,angularjs,directive,Angularjs,Directive,如何创建一个指令,允许我访问内联样式标记中的$scope对象 我需要的是这样的东西: <style> p { font-size: {{userSetting.fontSize}} margin: {{userSetting.margin}} } </style> p{ 字体大小:{{userSetting.fontSize} 边距:{{userSetting.margin} } 我已经开始为它编写指令,但不知道如

如何创建一个指令,允许我访问内联样式标记中的$scope对象

我需要的是这样的东西:

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

p{
字体大小:{{userSetting.fontSize}
边距:{{userSetting.margin}
}

我已经开始为它编写指令,但不知道如何创建它。

所以。。。虽然我不认为这样做是个好主意。您可以通过以下指令来完成:

<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)
    }
  }
})

h1{
颜色:{{h1.color}};
}
```
app.directive('ngStyleDefinition',函数($timeout){
返回{
限制:'E',
替换:正确,
是的,
模板:“”,
链接:功能(范围、元素、属性){
$timeout(函数(){
html(element.children().text())
}, 0)
}
}
})
引入$parse或$interpolate服务可能会更干净一些,但这就是要点


这里可以看到几个例子:

看起来你看的方向不对,你可以操作DOM,但不能操作css类,你应该在DOM中的元素中添加和删除类。内联样式是自定义的,由用户决定,所以它可以是边距:10px或边距:55px-这取决于用户。这就是为什么我需要将它们内联,而不是在类中。谢谢-我将把这标记为正确答案,因为它引导我走上正确的道路。为什么这不是个好主意?其背后的逻辑是,用户可以为自己的页面设置样式,而我正在使用内联样式来实现这一点。我认为这比使用ngstyle等元素本身进行样式化要快,我想这实际上取决于应用程序的上下文。