Javascript 当输入值在其他模板上更改时,如何重新渲染blaze模板?
我有一个名为“方向”的模板,其中包含一系列滑块的参数,这些滑块的值取决于来自另一个名为“选择器”的模板的输入 当我更改选择器模板上的输入值时,我希望方向模板使用使用使用新输入值计算的滑块的新值重新渲染Javascript 当输入值在其他模板上更改时,如何重新渲染blaze模板?,javascript,templates,meteor,meteor-blaze,Javascript,Templates,Meteor,Meteor Blaze,我有一个名为“方向”的模板,其中包含一系列滑块的参数,这些滑块的值取决于来自另一个名为“选择器”的模板的输入 当我更改选择器模板上的输入值时,我希望方向模板使用使用使用新输入值计算的滑块的新值重新渲染 要做到这一点,最好的方法是什么?我应该完全重新提交模板还是有更有效的方法?您需要实现overservables,当值发生变化时,您可以使用它在反应模式下运行。您可以使用会话变量。你需要使用 Session.set('variablename', value) 在选择器模板中设置变量,以及 Se
要做到这一点,最好的方法是什么?我应该完全重新提交模板还是有更有效的方法?您需要实现overservables,当值发生变化时,您可以使用它在反应模式下运行。您可以使用会话变量。你需要使用
Session.set('variablename', value)
在选择器模板中设置变量,以及
Session.get('variablename')
要检索它的值,请在需要它的模板中检索它。流星反应性应该做剩下的- Mathieu的会话建议非常有效-Michel还提到了反应变量。只要您使用Meteor 1.3或更高版本,相应地定义、导出和导入变量,就可以使用ReactiveVar包实现与使用Session几乎相同的结果 e、 g.在模板A中:
//... set something to the Reactive Var in an event handler, e.g.
import { ReactiveVar } from 'meteor/reactive-var';
export let selector = new ReactiveVar();
Template.templateA.events({
'click .something':(event)=>{
selector.set('somethingImportant');
}
})
在模板B中:
// ... making sure you import the reactive var
import { selector } from '/path/to/templateA';
Template.templateB.helpers({
getSelector:()=>{
return selector.get()
}
});
更多关于流星的信息可以在流星的文档中阅读。文档中需要注意的一个关键问题是:
ReactiveVars可以保存任何值,而会话变量是有限的
到JSON或EJSON
这可能值得记住,这取决于您如何处理驱动滑块反应性的数据。虽然这是一种可能的解决方案,但远不是最简单的解决方案。该解决方案是什么?会话变量还是反应变量。这是跨模板进行反应性通信的正常流星模式。这两个模板之间的关系是什么?父母/子女?父模板的两个子模板?或