Как вы получаете все экземпляры шаблона?

Я знаю, что могу получить один экземпляр шаблона, выполнив Blaze.getView(node), Но как я могу найти все случаи Template.foo?

1 ответ

Решение

Если мы заимствуем walkTheDOM у Крокфорда, мы можем перенести это в консоль браузера и найти все экземпляры шаблонов на любой странице.

function findAllTemplateInstances(templateName){
  function walkTheDOM(node, func) {
      func(node);
      node = node.firstChild;
      while (node) {
          walkTheDOM(node, func);
          node = node.nextSibling;
      }
  }
  var instances = [];
  walkTheDOM(document.body, function(node) {
    try{
      if (Blaze.getView(node).name === templateName){
        instances.push(Blaze.getView(node).templateInstance());
      }
    } catch(err){
    }
  });
  return _.uniq(instances)
}

Пример использования crater.io

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