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