此代码显示我的应用程序中MenuItems集合中的项目,但在开发过程中,当服务器重新运行时,列表将获得添加到旧“重复项目”的新列表。
我只需要一个列表,而不是重复。服务器重新启动时模板重复列表项目
为什么会发生这种情况,以及如何解决它?由于
/////////////////////////////////////
// client code
/////////////////////////////////////
<template name="mainMenu">
<div class="container">
<div class="row">
<section class="col-xs-12">
<div class="list-group menuItems">
{{#each menuItems}}
<li data-template="{{menuItem}}" role="presentation">
<a href="#" class="list-group-item menuItem">
<img src="/abc.png">
{{menuItem}} <span class="badge">></span>
</a>
</li>
{{/each}}
</div>
</section>
</div>
</div>
</template>
Template.mainMenu.onCreated(function() {
var template = this;
template.handler = template.subscribe('menuItems');
});
Template.mainMenu.helpers({
menuItems: function() {
return MenuItems.find();
}
});
Template.mainMenu.onDestroyed(function() {
var template = this;
if (template.handler && template.handler.stop) template.handler.stop();
});
/////////////////////////////////////
// server code
/////////////////////////////////////
var items =
[
{menuItem: "task1", group: "ab"},
{menuItem: "task2", group: "ab"},
{menuItem: "task3", group: "b"},
{menuItem: "task4", group: "a"},
{menuItem: "task5", group: "a"},
{menuItem: "task6", group: "a"},
{menuItem: "task7", group: "b"},
{menuItem: "task8", group: "b"},
{menuItem: "task9", group: "b"},
{menuItem: "login", group: "ab"},
{menuItem: "logout", group: "ab"}
]
_.each(items, function (doc) {
MenuItems.insert(doc);
})
您不需要手动取消订阅'onDestroyed'。只是尝试没有这个 –