Angularjs 角度内联CSS
如何创建一个指令,允许我访问内联样式标记中的$scope对象 我需要的是这样的东西:Angularjs 角度内联CSS,angularjs,directive,Angularjs,Directive,如何创建一个指令,允许我访问内联样式标记中的$scope对象 我需要的是这样的东西: <style> p { font-size: {{userSetting.fontSize}} margin: {{userSetting.margin}} } </style> p{ 字体大小:{{userSetting.fontSize} 边距:{{userSetting.margin} } 我已经开始为它编写指令,但不知道如
<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等元素本身进行样式化要快,我想这实际上取决于应用程序的上下文。