这是 Meteor 应用程序中菜单的简化工作模板:
<template name="menus">
{{#each menus}}
{{> menu}}
{{/each}}
</template>
Template.menus.helpers({
menus: function () {
return menus.find();
}
});
<template name="menu">
{{title}}
{{#each menu_items}}
{{> menu_item}}
{{/each}}
</div>
</template>
Template.menu.helpers({
menu_items: function () {
return menu_items.find({
menuId: this._id
});
}
});
<template name="menu_item">
<div class="b-menu-item">
<a class="b-menu-item-link" href="{{link}}">{{title}}</a>
</div>
</template>
现在我需要添加menu_level
模板来实现无限子菜单项渲染:
<template name="menus">
{{#each menus}}
{{> menu}}
{{/each}}
</template>
Template.menus.helpers({
menus: function () {
return menus.find();
}
});
<template name="menu">
{{title}}
{{#if menu_items}}
{{> menu_level}}
{{/if}}
</div>
</template>
<template name="menu_level">
<div class="b-menu-level">
{{#each menu_items}}
{{> menu_item}}
{{/each}}
</div>
</template>
Template.menu_level.helpers({
menu_items: function () {
return menu_items.find({
menuId: this._id
});
}
});
<template name="menu_item">
<div class="b-menu-item">
<a class="b-menu-item-link" href="{{link}}">{{title}}</a>
{{#if menu_items}}
{{> menu_level}}
{{/if}}
</div>
</template>
Template.menu_item.helpers({
menu_items: function () {
return menu_items.find({
menuItemId: this._id
});
}
});
但是,我无法通过此助手获取菜单项:
Template.menu_level.helpers({
menu_items: function () {
return menu_items.find({
menuId: this._id
});
}
});
如何强行this._id
联系menu <- menu_level
不只是menu_level
没有_id
?