Я пытаюсь создать простой интерфейс перетаскивания/перетаскивания, используя пользовательские директивы в Angularjs. Я работаю с несколькими образцами, собранными с этого сайта, и другими, и все это кажется довольно простым, но не совсем работает. В частности, я пытаюсь реализовать обработчик «dragenter», который изменит внешний вид целевой точки при перемещении элемента перетаскивания. Во-первых, я покажу HTML я работаю с:Изменить класс элемента в функции директивной ссылки angularjs
<div cstyle="width: 900px; height: 600px; border: 1px solid #999">
<div id="draggable" ses-draggable style="width: 200px; height: 150px; background-color: #777">Drag Me!</div>
<div id="dropTarg1" ses-drop-target style="width: 100px; height: 100px; border: 1px solid #888; background-color: #aaa">Drop target 1</div>
<div id="dropTarg2" ses-drop-target style="width: 100px; height: 100px; border: 1px solid #888; background-color: #aaa">Drop target 2</div>
<div id="dropTarg3" ses-drop-target style="width: 100px; height: 100px; border: 1px solid #888; background-color: #aaa">Drop target 3</div>
</div>
Вот код для двух директив:
ems2App.directive('sesDraggable', function() {
return {
restrict: 'A',
link: function (scope, elem, attrs) {
angular.element(elem).attr("draggable", "true");
}
};
});
ems2App.directive('sesDropTarget', function() {
return {
restrict: 'A',
link: function (scope, elem, attrs) {
elem.bind('dragenter', function (e) {
angular.element(e.target).addClass('divDragOver');
});
elem.bind('dragleave', function (e) {
angular.element(e.target).removeClass('divDragOver');
});
}
};
});
Вот класс divDragOver:
.divDragOver {
border: 3px solid black;
background-color: green;
}
Это все отлично работает, поскольку функция правильно вызывается, когда перетаскиваемый элемент является препаратом по одной из целей перетаскивания, однако изменение класса не отображается в браузере. Ничего не отображается в консоли браузера, поэтому ошибки не возникают, просто не меняет внешний вид элемента target drop.
О, мальчик ... Я когда-нибудь был глуп. Большое спасибо за то, что вы не сказали что-то вроде «действительно глупого вопроса». Я бы заслужил это. Я действительно понимаю правила приоритета CSS. Думаю, я не мог увидеть лес для деревьев. Самая смешная его часть - я смотрел на это не менее часа, прежде чем приступать к публикации вопроса. Спасибо за ваш вежливый ответ! – user3772343