对于唯一的可视化编辑器,我试图创建一个写入CSS样式的新指令。我坚持试图在单击复选框时更新指令以使背景颜色属性透明。卡住创建自定义css样式指令
这是我的(非工作)指令:
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/
任何帮助将不胜感激。
感谢您的回答。在页面上,我将使用它,该样式将应用于列表中未知数量的项目,因此在每个项目上设置CSS属性似乎不是正确的方式。 我确实设法让它工作。原来,我不得不解析复选框的值为布尔值,以使其工作。我没有替换元素,但改变了它里面的html。我仍然不确定这是否是最好的方法。有更多的学习做我猜。这里是工作jsfiddle:http://jsfiddle.net/psinke/YJxR9/ –
@Peter,$观察将始终返回一个字符串,所以而不是'if(parseBool(myBool)){'你可以简单地这样做:'if (myBool ==“true”){'。 (ng-model将只使用值'true'和'false'作为复选框,所以不需要查找其他可能的布尔值。) –