2015-10-20 97 views
3

我知道我可以通過做Blaze.getView(node)來獲得單個模板實例。但是我怎樣才能找到Template.foo的所有實例?如何獲取模板的所有實例?

+0

上放棄這一到瀏覽器控制檯,並找到所有的模板實例我不知道流星API這樣做的。如何收集['Template.foo.onCreated'](http://docs.meteor.com/#/full/template_onCreated)中的實例並在['Template.foo.onDestroyed'](http:/ /docs.meteor.com/#/full/template_onDestroyed)? – Season

+0

謝謝,可以def做到這一點,但希望我可以在其他人的應用程序的控制檯中使用的東西。 – Loren

回答

4

如果我們從克羅克福德借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) 
} 

Example using crater.io

+0

這是看中,感謝您分享 –

+0

這是一些主要的DOM-fu在那裏! –

相關問題