Как вы можете изменить 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.

Другие вопросы по тегам