當我嘗試在選擇器位於子模板中的模板上使用this.findAll時,findAll不返回任何內容。this.findAll對子模板不起作用
這裏的HTML:
<template name="products">
{{#each productList}}
{{> product }}
{{/each}}
</template>
<template name="product">
<div class="box">{{name}}</div>
</template>
這裏的JS:
Template.products.helpers({
productList: function() {
var all = Products.find({}).fetch();
return all;
}
});
Template.products.rendered = function(){
var boxes = this.findAll('.box');
console.log(boxes.length);
}
boxes.length的輸出爲0的任何想法,我怎麼能拿 「盒子」 的元素?
看着實際的頁面,我確實觀察到有某種延遲。在產品出現在頁面之前,console.log已顯示輸出。我使用鐵路路由器,並使用waitOn產品。所有產品加載完成後,我需要運行腳本。任何其他想法? – ian
這並不容易,因爲在加載收集數據時,流星並不真正具有「完成」的概念。添加其他產品時會發生什麼?如果答案是再次運行你的函數,那麼我建議你考慮一種使用'product.rendered'而不是'products.rendered'的方法。注意 - 值得一提的是,你可以在任何一個函數中使用'$('。box')'來獲取頁面上的所有框,儘管如果你有多個'products'實例可能沒有意義。模板。 –
謝謝大衛!你給了我如何解決它的想法。我會在一段時間後發佈答案。 – ian