提问者:小点点

Ember. js-更改手柄动画


我在车把模板(在Ember. js中)中使用{{if}}语句,并且目前已经设置了它,因此如果foo为真,则会显示一个表单。

我有一个按钮可以切换foo的值并隐藏/显示表单。这是通过{{action}}属性完成的。

我想做的是动画这个变化。如果可能,我如何使用当前的设置来做到这一点?

注意:我可以使用fadeIn/fadeOut(jQuery)。


共2个答案

匿名用户

看看Liquid Fire(参见:https://github.com/ef4/liquid-fire)。我个人还没有使用它,但是示例看起来很有希望。尤其是这个表单示例看起来与您想要的相似:http://ef4.github.io/ember-animation-demo/#/animated-if-demo来源在下一张幻灯片上:http://ef4.github.io/ember-animation-demo/#/animated-if-source

匿名用户

你可以这样做:

在车把文件中:

<script type="text/x-handlebars" data-template-name="newPost">
     <p> Template for New Post </p>
     <div class="errorMsg">
         <p>Error Message</p>
     </div>
</script>

在视图中,您可以使用操作设置触发器,并隐藏带有消息错误的div

App.NewPostView = Ember.View.extend({
    showError: function() {
        $('.errorMsg').fadeToggle("slow");
    },
    didInsertElement : function(){
        $('.errorMsg').hide();
        this.get('controller').on('showError', this, this.showError);
    },
    willClearRender: function()
    {
      this.get('controller').off('showError', this, this.showError);
    }
});

最后在控制器中,这必须扩展到Ember. Event,当您想显示消息错误时,您必须调用this.触发器错误。

App.NewPostController = Ember.ObjectController.extend(Ember.Evented,{
    actions:{
         // This an example the method that verify and show error after validating
         addNewPost: function(post){
             if(post.get('name') === 'valid'){
                  //do your business                       
             }else{
                  //this will show the message error
                  this.trigger('showError');
             }
         }
    }

})

当您想隐藏消息错误时,您必须再次调用this.触发器('showError')并隐藏消息,您可以将其与其他效果一起使用。