meteor.js-是否可以在反应式模板中维护由javascript引起的css更改?

meteor.js-是否可以在反应式模板中维护由javascript引起的css更改?,javascript,meteor,Javascript,Meteor,我有一个模板连接到一个经常变化的数据源,我希望该模板能够被用户切换。我在父模板中有一个按钮,可以触发另一个模板上的动画以滑出屏幕。。。但是,一旦第二个模板的数据发生更改,该模板就会更新,并使用原始css重新呈现,即在应该隐藏时再次显示该模板。为了解决这个问题,我尝试在动画函数中添加一个回调函数来设置会话变量,如session.set(“showData”,false),并更新该模板以仅显示该会话变量是否为true。这对于隐藏它非常有效,动画播放并且保持隐藏状态,但是我不知道如何使用动画中的幻灯片

我有一个模板连接到一个经常变化的数据源,我希望该模板能够被用户切换。我在父模板中有一个按钮,可以触发另一个模板上的动画以滑出屏幕。。。但是,一旦第二个模板的数据发生更改,该模板就会更新,并使用原始css重新呈现,即在应该隐藏时再次显示该模板。为了解决这个问题,我尝试在动画函数中添加一个回调函数来设置会话变量,如session.set(“showData”,false),并更新该模板以仅显示该会话变量是否为true。这对于隐藏它非常有效,动画播放并且保持隐藏状态,但是我不知道如何使用动画中的幻灯片使其再次显示。如果我将该会话变量设置为true,它将立即重新渲染,使用原始css,并且没有时间在动画中进行幻灯片

以下是html/模板:

//the two templates are called inside <body>
{{> controls}}
<div class="sidebar">
  {{> dataview}}
</div>

<template name="controls">
<div id="controls">
  <a class="toggle button">Hide Dataview</a>
</div>
</template>

<template name="dataview">
{{#if show}}
<div id="mydata">
  <ul>
  {{#each somedata}}
    //any data in here
  {{/each}}
  </ul>
</div>
{{/if}}
</template>

这有意义吗?我走错方向了吗?我觉得template.mytemplate.preserve可能是我所需要的,但我尝试过,要么实现错误,要么没有达到我的期望。谢谢你的意见

不幸的是,这是当前渲染引擎的一个副作用,因此简短的回答是否定的,因为您描述的确切原因,您无法可靠地执行此操作

好消息是Meteor正在重写他们的渲染引擎,以支持细粒度DOM更新、jQuery集成等等!这将与定于本季度发布的1.0一起发布

您可以在此处阅读更多信息:

谷歌小组对此进行了讨论:

请从“template-engine-preview-release-10.1”分支进行尝试:

流星路线图:


感谢您提供的资源
Template.controls.events({
  'click .toggle': function(e) {
    //using an animation library but I would expect the same behaviour with jquery's .animate or simply modifying the css with vanilla js
    TweenLite.set($('.sidebar'), {perspective:400});
    TweenLite.to($('#mydata'), 0.5, {rotationY:90, transformOrigin:"right top", onComplete:toggleView});
  }
});

function toggleView () {
  Session.set("showData", false);
}

Template.dataview.show = function() {
  //this is initialized as true in meteor.startup
  return Session.get("showData")
}