在我的应用程序中,我需要显示从流星模板呈现的无序列表,并且每个列表项都需要能够显示从同一模板呈现的子列表(如果单击),并且新添加的列表将需要能够选择进一步显示新的子列表。
原始列表和子列表在Mongo中表示如下:
{ person:"Tom", friendIds: [ id1, id2, id3] }
我需要子列表项是被动的,所以如果修改了父Mongo文档中的子列表项数据,那么子列表会显示更改。
我尝试过使用
UI.insert(UI.renderWithData(...))
在初始插入时效果很好,但不是反应性的。我还尝试了一些我在论坛中发现的其他模式,但到目前为止我都没有。
目前推荐的方法是什么,在0.8及更高版本中解决这个问题?我打算深入研究Deps的机制,试图让它发挥作用,但我担心如果我推出自己的解决方案,我将偏离Meteor方式。
答案 0 :(得分:0)
我猜这是https://groups.google.com/forum/#!topic/meteor-talk/zUG9EVo3rpQ的重新发布。
我认为没有理由在此处使用UI.insert
API。您应该在普通模板中执行此操作:
{{#each list}}
<span>Name: {{person}}</span>
{{#if expanded}}
{{#each friendIds}}
{{> someOtherTemplate}}
{{/each}}
{{else}}
<a class="expand">Show friends</a>
{{/if}}
{{/each}}
有这样的助手:
Template.foo.expanded = function() { return Session.equals("openedList", this._id); }
Template.foo.events({
"click .expand": function(e) {
e.preventDefault();
Session.set("openedList", this._id);
};
});