流星直播改变有动画吗?

Aks*_*hat 40 meteor

Meteor如何处理实时更改?例如,我不希望变化是瞬时的,而是使用某种类型的动画.如果我们使用css设置更改项目动画/过渡是否有效?那些旧版浏览器的jQuery动画呢?

Tim*_*sch 12

这是一个使用meteor的简单动画的工作示例.

这里的情况是我们有一个项目清单.如果用户点击任何这些项目,该项目将向左侧动画20px.

JS

//myItem
Template.myItem.rendered = function(){
  var instance = this;
  if(Session.get("selected_item") === this.data._id){
    Meteor.defer(function() {  
      $(instance.firstNode).addClass("selected"); //use "instance" instead of "this"
    });
  }
};

Template.myItem.events({
  "click .myItem": function(evt, template){
    Session.set("selected_item", this._id);
  }
});


//myItemList
Template.myItemList.helpers({
  items: function(){
    return Items.find();
  }
});
Run Code Online (Sandbox Code Playgroud)

模板

<template name="myItem">
  <div class="myItem">{{name}}</div>
</template>

<template name="myItemList">
  {{#each items}}
    {{> myItem}}
  {{/each}}
</template>
Run Code Online (Sandbox Code Playgroud)

CSS

.myItem { transition: all 200ms 0ms ease-in; }
.selected { left: -20px; }
Run Code Online (Sandbox Code Playgroud)

您也可以使用jQuery动画,而不是使用花哨的CSS:

Template.myItem.rendered = function(){
  if(Session.get("selected_item") === this.data._id){
    $(this.firstNode).animate({
      left: "-20px"
    }, 300);
  }
};
Run Code Online (Sandbox Code Playgroud)

但是你需要删除CSS代码.

.myItem { transition: all 200ms 0ms ease-in; }
.selected { left: -20px; }
Run Code Online (Sandbox Code Playgroud)


Mic*_*öhr 5

有这样的解决方法:

<template name="foo">
  ..content..
  {{bar}}
</template>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Meteor将在Template.foo.bar每次渲染此模板时调用.因此,在此函数中,您可以执行各种Jquery或CSS3动画(例如,通过向模板div添加类).

  • 这里的一个例子会很棒.(注意"有用的问题"的支持者是否比"答案有用"更多).也许你可以更新你的答案? (10认同)