我可以在Meteor中只运行一次模板助手吗?

时间:2012-06-15 18:28:57

标签: meteor handlebars.js

我有一个看起来像这样的模板:

<template name="foo">
  <div id="wrapper" style="overflow: hidden">
    <div id="content" style="margin-top: -{{contentHeight}}px">
      {{content}}
    </div>
    <button id="toggle">Show/Hide Content</button>
  </div>
</template>

其中{{contentHeight}}是计算#content高度的助手,点击切换按钮会导致#content通过设置其边距动画来上下滑动。

问题在于,当我在foo上进行数据库更新时,#content的{​​{1}}属性会重置为新的style值,并将其隐藏。我不希望Meteor在渲染后触摸元素,但即使给它一个唯一的ID也无法阻止它;正如文档所说:

  

Meteor将保留[具有唯一名称/ ID的元素],即使它们的封闭模板已被重新呈现,但仍会更新其子项并复制任何属性更改。

(强调我的。)那么最好的方法是什么?如何在渲染模板时设置元素的contentHeight,然后阻止Meteor修改属性?

1 个答案:

答案 0 :(得分:0)

你有没有试过像:

<div id="content" {{contentHeightStyle}}>

Template.foo.contentHeightStyle = function() {
  if (!this._contentHeightStyleCalculated) {
    this._contentHeightStyleCalculated = true;
    return 'style="..."';
  }
}