如果输入值在其他模板上发生更改,我该如何重新呈现blaze模板?

时间:2017-02-27 16:58:15

标签: javascript templates meteor meteor-blaze

我有一个名为' orientation'包含一系列滑块的参数,这些滑块的值取决于来自另一个名为'选择器的模板的输入。

当我更改选择器模板上的输入值时,我希望使用新输入值计算滑块的新值来重新定位方向模板。

如果我完全放弃模板或者是否有更有效的方式,最好的方法是什么?

3 个答案:

答案 0 :(得分:0)

您可以使用Session变量。你需要使用

Session.set('variablename', value) 

在选择器模板中设置变量,

Session.get('variablename')

在需要它的模板中检索它的值。其余的流星反应性应该完成; - )

答案 1 :(得分:0)

Mathieu的会议建议很有效--Michel也提到了反应变量。您可以使用ReactiveVar包来获得与使用Session大致相同的结果,只要您相应地定义,导出和导入变量(假设您使用的是Meteor 1.3或更高版本)。

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()
  }
});

有关ReactiveVar的更多内容可以在Meteor的文档中阅读。文档中要注意的一个关键是:

  

ReactiveVars可以保存任何值,而Session变量是有限的   到JSON或EJSON。

根据您处理推动滑块反应性的数据的方式,可能值得记住。

答案 2 :(得分:-1)

您需要实施过度监视,当值发生变化时,您可以使用它来处于被动模式。