1

Meteor“重新渲染”后如何运行函数?

我有一个模板,它在渲染时应该运行一个(fancyform)函数,该函数采用一个普通的选择框,并设置它的样式。所以我把函数放在了一个Template.tempname.rendered = function(){}. 都好。

但我还有一个 i18n 功能(usign TAP-i18n),它通过更改会话变量来更改语言,这使得页面上的文本更改为我们定义的任何文本。

但是,Template.tempname.rendered` 中的函数不会再次运行,选择框语言也不会更新。我需要再次运行 fancyform 函数,以便选择框也使用正确的语言。

我该怎么做呢?我已经阅读(并且努力理解)依赖关系......这相关吗?这是矫枉过正吗?任何指针将不胜感激。

4

1 回答 1

2

在您的rendered回调中,您需要有一个主动计算,当您的i18n反应字典中的任何内容发生变化时,它会使自己失效,因此:

Template.tempname.rendered = function () {
  this.autorun(function () {
    TAPi18n.getLanguage() // make sure to invalidate if the language changes
    /* run your fancy form function here */
  ));
};
于 2014-12-19T08:53:24.407 回答