-1
AngularJS 앱에 이벤트 리스너를 추가하고 싶습니다. 목표는 'ui-list__list-shorten'클래스가있는 앱의 모든 목록을 줄이는 것입니다.AngularJS 앱의 이벤트 리스너
AngularJS에서 이러한 종류의 이벤트 리스너 사용에 관한 모범 사례가 무엇인지 잘 모르겠습니다. 이에 대한 도움말이 필요합니다.
어디에서 이것을 AngularJS (1) 앱에 구현합니까?
미리 감사드립니다.
코드의 예 :
var listUl = document.querySelectorAll('.ui-list__list--shorten');
// Add/Remove class 'list--shortened'
function listClass(list) {
if (list.classList.contains("ui-list__list--shortened")) {
list.classList.remove("ui-list__list--shortened");
} else {
list.classList.add("ui-list__list--shortened");
}
}
// Shorten list & add show all button
function listShorten(list) {
// Shorten the list
listClass(list);
// Creating elements
var div = document.createElement("div");
var span = document.createElement("span");
var spanContent = document.createTextNode("Show all");
// Adding classes
span.classList.add("ui-list__button", "ui-list__button--closed");
div.classList.add("ui-list__hide-overflow");
span.appendChild(spanContent);
div.appendChild(span);
// Add after the list
function insertAfter(list, div) {
list.parentNode.insertBefore(div, list.nextSibling);
}
insertAfter(list, div);
}
// .ui-list__list longer than 100 px will be collapsed
for (var i = 0; i < listUl.length; i++) {
if (listUl[i].offsetHeight > 100) {
listShorten(listUl[i]);
}
}
// Change button when clicked
var listButton = document.querySelectorAll('.ui-list__button');
function changeButton(e) {
if (e.classList.contains("ui-list__button--closed")) {
e.innerHTML = "Show less";
e.classList.remove("ui-list__button--closed");
e.classList.add("ui-list__button--open");
} else if (e.classList.contains("ui-list__button--open")) {
e.innerHTML = "Show all";
e.classList.remove("ui-list__button--open");
e.classList.add("ui-list__button--closed");
}
}
// Event listener for each button
for (i = 0; i < listButton.length; i++) {
listButton[i].addEventListener("click", function() { listClass(this.parentNode.previousSibling); changeButton(this); });
}
DOM을 직접 조작하지 마십시오! DOM 요소가 아닌 일반 데이터로 작업해야합니다. –
답변 해 주셔서 감사합니다. 이걸 내가 어떻게 처리해야할지 모르겠다. 내가 어떻게해야하는지 지시 할 수 있니? – danielle
일반적으로 AngularJS 프레임 워크에서 DOM 조작은 핵심 지시문 또는 [사용자 지정 지시문] (https://docs.angularjs.org/guide/directive)을 사용하여 수행됩니다. 지시문 내에서 DOM 조작은 [jqLite] (https://docs.angularjs.org/api/ng/function/angular.element#angularjs-s-jqlite) 메소드를 사용하여 수행됩니다. 이벤트 리스너는 ['elem.on()'] (http://api.jquery.com/on/)과 함께 추가됩니다. – georgeawg