无路由的Meteor动态内容
在不创建路由的情况下更改页面内容的最佳实践是什么无路由的Meteor动态内容,meteor,meteor-blaze,Meteor,Meteor Blaze,在不创建路由的情况下更改页面内容的最佳实践是什么 BlazeLayout.render('mainLayout', { top: 'header', menu: 'menu', main: 'dashboard', bottom: 'footer' }); 如何在不创建新管线的情况下在仪表板内隐藏/显示模板组件?这是否应该在helpers中使用某种html中的if/else逻辑并使用helper进行on按钮单击?假设我希望根据按钮单击(href)在仪表板模板中显示不同的内容 请提供一个最佳实践
BlazeLayout.render('mainLayout', { top: 'header', menu: 'menu', main: 'dashboard', bottom: 'footer' });
如何在不创建新管线的情况下在仪表板内隐藏/显示模板组件?这是否应该在helpers中使用某种html中的if/else逻辑并使用helper进行on按钮单击?假设我希望根据按钮单击(href)在仪表板模板中显示不同的内容
请提供一个最佳实践和良好的解决方案,该解决方案易于使用大量组件
如何在仪表板中隐藏/显示模板组件而不显示
创建新路线?这是否应该在助手中使用某种
在html中使用if/else逻辑,并在单击按钮时使用helper
您可以这样做,但您应该注意以下几点,以保持代码干净和模块化:
- 尝试将仪表板的某些部分包装到自己的模板中,以保持代码干净
- 使用
支持许多ReactiveDict
实例ReactiveVar
- 在模板中包装重复出现的部件,以减少重复代码
- 在全局或仪表板最上方的模板中注册定期帮助程序
- 在父模板上订阅仪表板所有部分共享的数据,并订阅相应组件中的本地数据
- 使用
和autorun
并显示加载指示器,直到订阅就绪。在渲染之前不要等待加载所有内容,因为这可能会显著降低用户体验subscription.ready()
然后,您可以读取此id并在ReactiveDict
中切换其状态:
Template.dashboardComponent.events({
“click.toggleButton”(事件,templateInstance){
event.preventDefault();
//获取“数据目标”的值
const targetId=$(event.currentTarget.attr('data-target');
//通过targetId获取目标的当前切换状态
const-toggleState=templateInstance.state.get(targetId);
//通过targetId切换目标的状态
templateInstance.state.set(targetId,!toggleState);
}
});
然后,在模板中,您可以要求通过简单的if/else进行渲染:
{{#如果可见'targetId'}
目标是可见的
{{/if}
您的助手正在返回状态:
Template.dashboardComponent.helpers({
可见(targetName){
返回Template.instance().state.get(targetName);
}
});
可能存在在父模板和子模板之间共享状态的问题,我建议您尽可能避免会话。然而,作为初学者,首先使用会话
,然后逐步实现更解耦(参数化模板)的解决方案要容易得多
请提供易于使用的最佳实践和良好解决方案
很多组件
这是一个很高的要求,这是你的能力,朝着这两个方向努力!不过,以下是对这一点的简短介绍:
- 最佳实践是对您有效的,并且可以在其他用例中对其他人有效。试着与其他人分享你的工作,看看他们的用例在哪里会失败
- 使用路由的优点是,您可以使用查询参数在url中保存当前视图状态。这增加了一个优点,即在重新加载页面或通过链接共享时,页面状态可以完全恢复
- 简单,组件多是一个矛盾,我不知道你是否期待一些神奇的泡芙为你解决这个复杂问题。作为一名软件工程师,你有能力将复杂性抽象为更小的部分,直到你能在一定范围内解决问题
回答得很好!非常感谢你!