我在车把模板(在Ember. js中)中使用{{if}}语句,并且目前已经设置了它,因此如果foo为真,则会显示一个表单。
我有一个按钮可以切换foo的值并隐藏/显示表单。这是通过{{action}}属性完成的。
我想做的是动画这个变化。如果可能,我如何使用当前的设置来做到这一点?
注意:我可以使用fadeIn/fadeOut(jQuery)。
看看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')并隐藏消息,您可以将其与其他效果一起使用。