对于唯一的可视化编辑器,我试图创建一个写CSS样式的新指令。我被困在试图使指令更新时,单击复选框以使background-color属性透明。
这是我的(无效)指令:
myApp.directive('customstyle', function () { return { restrict: 'E', link: function (scope, element, attrs) { var bgColor; scope.$watch(attrs.myTransparent, function (value) { if (value) { bgColor = 'transparent'; } else { bgColor = attrs.myBgcolor; } updateStyle(); }, true); function updateStyle() { var htmlText = '<style>.' + attrs.myClass + '{'; htmlText += 'background-color: ' + bgColor + ';'; htmlText += "}</style>"; element.replaceWith(htmlText); } updateStyle(); } } });
和html元素:
<customstyle my-class="examplediv" my-transparent="settings.Window.Transparent" my-bgcolor="settings.Window.BackgroundColor"></customstyle>
这是这种情况的jsfiddle:http : //jsfiddle.net/psinke/jYQc6/
任何帮助将不胜感激。
尝试直接在要更改的元素上使用指令,这样做更容易维护。
HTML:
<div class="examplediv customstyle" my-transparent="settings.Window.Transparent" my-bgcolor="{{settings.Window.BackgroundColor}}"> </div>
注意:{{settings.Window.BackgroundColor}}用于传递属性的值而不是字符串。
{{settings.Window.BackgroundColor}}
指示:
myApp.directive('customstyle', function () { return { restrict: 'AC', link: function (scope, element, attrs) { scope.$watch(attrs.myTransparent, function (value) { element.css('background-color', (value ? 'transparent' : attrs.myBgcolor)); }); } } });
注意:用于element.css()直接在元素上更改CSS属性。
element.css()
jsFiddler :http : //jsfiddle.net/jYQc6/8/