Per un solo editor visuale sto provando a creare una nuova direttiva che scrive uno stile CSS. Sono bloccato a cercare di ottenere l'aggiornamento della direttiva quando si fa clic su una casella di controllo per rendere trasparente la proprietà background-color.Bloccato la creazione di una direttiva di stile css personalizzata
Ecco la mia (non funzionante) direttiva:
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();
}
}
});
e html elemento:
<customstyle my-class="examplediv" my-transparent="settings.Window.Transparent" my-bgcolor="settings.Window.BackgroundColor"></customstyle>
Ecco un jsfiddle della situazione: http://jsfiddle.net/psinke/jYQc6/
Qualsiasi aiuto sarebbe molto apprezzato.
Grazie per la risposta. Nella pagina in cui lo userò, lo stile verrà applicato a un numero sconosciuto di elementi in un elenco, quindi impostare le proprietà css su ogni elemento non sembra il modo giusto per andare qui. Sono riuscito a farlo funzionare. Ho scoperto che dovevo analizzare il valore della casella di controllo su un valore booleano per farlo funzionare. E non ho sostituito l'elemento, ma ho cambiato l'html al suo interno. Non sono ancora sicuro se questo è il modo migliore per farlo. Ho ancora un po 'di apprendimento da indovinare. Ecco il jsfiddle funzionante: http://jsfiddle.net/psinke/YJxR9/ –
@Peter, $ observ restituirà sempre una stringa, quindi invece di 'if (parseBool (myBool)) {' potresti semplicemente fare questo: 'if (myBool == "true") {'. (Il modello-ng utilizzerà solo i valori 'true' e' false' per la casella di controllo, quindi non c'è bisogno di cercare altri possibili valori booleani.) –