Javascript 在angularJS中编写内联css的更好方法?

Javascript 在angularJS中编写内联css的更好方法?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在用AngularJS编写一个指令,用于标记text here 通常我会有这个例子的属性,但它不是一个全面的列表,我可能没有一些属性。我必须将它们转换为CSS。 下面的代码并不完美。例如,如果未定义宽度,则宽度应为“自动”,而不是零,或者只是不包含在css部分中 指令('mytextarea',函数(){ 返回{ 限制:'E', 替换:正确, 是的, 模板:“”, 链接:函数(范围、元素、属性){ /*为该指令添加唯一属性*/ var newcss='width:'+(attrs.width

我正在用AngularJS编写一个指令,用于标记
text here

通常我会有这个例子的属性,但它不是一个全面的列表,我可能没有一些属性。我必须将它们转换为CSS。 下面的代码并不完美。例如,如果未定义宽度,则宽度应为“自动”,而不是零,或者只是不包含在css部分中

指令('mytextarea',函数(){ 返回{ 限制:'E', 替换:正确, 是的, 模板:“”, 链接:函数(范围、元素、属性){ /*为该指令添加唯一属性*/ var newcss='width:'+(attrs.width | 0)+'px;height:'+attrs.height+'px;'; 属性$set('style','color:red;'+newcss); /*删除不再需要的属性*/ 要素 .removeAttr(“宽度”) .removeAttr(“高度”); /*并设置一个默认类*/ 属性$set('class','default_subscreen'+attrs.class); } } 有没有更好的方法来写这篇文章?我尝试了JSON语法:

var mystyle = {
    position: 'absolute',
    left: attrs.x,
    width: attrs.width
}

attrs.$set('style', mystyle); // but mystyle is an object! should I use a filter?
也许我可以对这些值运行函数?比如
(attrs.width)?attrs.width:0;
我还记得JS中的一些东西可以写成
var s=“my string”+(attrs.width | 0)
。在哪里可以得到关于它的扩展解释?
我还有一些组件在它们的指令中需要类似的逻辑,我正在寻找一个优雅的解决方案。

编写一个函数,将
mystyle
对象转换为样式字符串,这样您就可以执行
attrs.$set('style',createStyle(mystyle))
我应该在哪里声明它?我必须在多个模块中使用它。我想你可以为它提供服务,因为我已经很久没有接触angular了,所以我不是100%这样做了。我最终扩展了$scope:我将所有属性存储在scope.properties中,因为我变异(和继承)所有这些样式。我得到了一个从该对象创建内联css的服务。例如,如果我有属性x和y(我输入AngularJS的传统XML中的坐标),我的css应该是“position:absolute;top…”。该服务创建了正确的字符串。