Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无路由的Meteor动态内容_Meteor_Meteor Blaze - Fatal编程技术网

无路由的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()
    并显示加载指示器,直到订阅就绪。在渲染之前不要等待加载所有内容,因为这可能会显著降低用户体验
假设我想在仪表板模板中显示不同的内容 基于按钮点击(href)

可以将数据属性附加到按钮,该按钮具有要切换的目标的特定id:


然后,您可以读取此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中保存当前视图状态。这增加了一个优点,即在重新加载页面或通过链接共享时,页面状态可以完全恢复

  • 简单,组件多是一个矛盾,我不知道你是否期待一些神奇的泡芙为你解决这个复杂问题。作为一名软件工程师,你有能力将复杂性抽象为更小的部分,直到你能在一定范围内解决问题

回答得很好!非常感谢你!