Как вы можете изменить classList элемента в Famo.us + Angular?
Я использую Famo.us + Angular. Я могу получить classList поверхности, выполнив это:
$scope.findElement = function() {
var elem = $famous.find("#colored-bg")[0].renderNode; // Returns Surface
console.log(elem.classList); // RETURNS: ["purple-bg", "container-border", "box-shadow"]
};
Вы не можете выполнять какие-либо операции над объектом Famo.us, которые вы обычно выполняете над любым другим объектом в DOM. Например, я думал, что мог бы добавить, удалить или заменить классы, подобные этому:
document.getElementById('id').classList.add('class');
document.getElementById('id').classList.remove('class');
добавить и удалить не существует, хотя. Я могу вернуть список классов и даже отдельные элементы из списка (например, только первый класс), но вы не можете изменить его. Какие-либо предложения?
2 ответа
setClasses
Метод принимает массив, и вы можете устанавливать классы, используя:
renderNode.setClasses(['white-bg', 'big-text']);
использование addClass
передавая имя класса, чтобы добавить класс, используя:
renderNode.addClass('big-text');
использование removeClass
передавая имя класса, чтобы удалить класс, используя:
renderNode.removeClass('big-text');
использование toggleClass
передавая имя класса для добавления / удаления в зависимости от того, существует ли оно:
renderNode.toggleClass('big-text');
Разобраться с этим, благодаря Тони Алвесу в Slack Chat на Famo.us:
renderNode.setClasses(['white-bg']);
Эта информация была найдена в github документах. Так что вся функция выглядит так:
$scope.findElement = function() {
var elem = $famous.find("#colored-bg")[0].renderNode;
console.log(elem);
elem.setClasses(['white-bg']);
console.log(elem.classList); // RETURNS: ["white-bg"]
};
setClasses будет принимать массив строк, которые он помещает в Fa-Surface.