编辑:已在答案中发布了一般解决方案!
我目前正在使用Masonry来定位一些{{> card}}
模板。
{{#each searchResults}}
{{> card}}
{{/each}}
{{searchResults}}
会返回Session.get("searchResults")
,这会在新搜索时发生变化。然后,该页面将使用新的{{> card}}
模板重新呈现。
我无法在正确的时间让我的砖石开火:
Template.search.onRendered(function(){
this.autorun(function(){
var tracking = Session.get("searchResults");
// ...masonry code here...
})
});
目前,砌体代码在Session.get("searchResults")
更改后立即触发,但在{{> card}}
模板呈现或存在之前。实际上,砌体定位零元素,然后元素被渲染(并保持在错误的位置)。
更新了问题:如何更新上一个{{> card}}
模板时如何调用砖石?(注意:我可以将onRendered附加到卡片模板上,但onRendered仅在卡片发生时触发首次创建,而不是更新时)
答案 0 :(得分:1)
一般说明:
lastItem
属性设置为true
的最后一项。{{> template}}
。onRendered
查找lastItem
属性。我的代码示例:
标记数组中的最后一项:
cards[cards.length - 1].lastItem = true;
添加返回数组的助手:
Template.search.helpers({
cards: function(){
return cards;
}
}
在搜索模板中,为每个对象渲染模板:
{{#each cards}}
{{> card}}
{{/each}}
使用onRendered检测最后一项。
Template.card.onRendered(function(){
if(this.data.lastItem){
//run masonry code here!
}
});