Đối với một trình chỉnh sửa trực quan, tôi đang cố tạo một chỉ thị mới viết kiểu CSS. Tôi đang cố gắng để có được chỉ thị để cập nhật khi một hộp kiểm được nhấp để làm cho thuộc tính màu nền trong suốt.Stuck tạo chỉ thị phong cách css tùy chỉnh
Dưới đây là của tôi (không làm việc) chỉ thị:
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();
}
}
});
và html yếu tố:
<customstyle my-class="examplediv" my-transparent="settings.Window.Transparent" my-bgcolor="settings.Window.BackgroundColor"></customstyle>
Dưới đây là một jsfiddle của tình hình: http://jsfiddle.net/psinke/jYQc6/
Bất kỳ trợ giúp sẽ được đánh giá rất nhiều.
Cảm ơn câu trả lời của bạn. Trên trang tôi sẽ sử dụng tính năng này, kiểu sẽ được áp dụng cho một số mục không xác định trong danh sách, vì vậy việc thiết lập thuộc tính css trên mọi mục dường như không đúng cách để đi đến đây. Tôi đã cố gắng làm cho nó hoạt động. Hóa ra là tôi phải phân tích giá trị hộp kiểm thành một boolean để làm cho nó hoạt động. Và tôi đã không thay thế các phần tử, nhưng thay đổi html bên trong nó. Tôi vẫn không chắc đây có phải là cách tốt nhất để làm điều này không. Có một số học thêm để tôi đoán. Đây là jsfiddle đang hoạt động: http://jsfiddle.net/psinke/YJxR9/ –
@Peter, $ quan sát sẽ luôn trả về một chuỗi, vì vậy thay vì 'if (parseBool (myBool)) {' bạn có thể đơn giản làm điều này: 'if (myBool == "true") {'. (Mô hình ng sẽ chỉ sử dụng các giá trị 'true' và' false' cho hộp kiểm, do đó không cần phải tìm các giá trị boolean khác có thể.) –