查看Backbone中的转换

时间:2014-08-02 14:27:05

标签: javascript jquery css3 backbone.js mobile

我正在使用Backbone.js和棘轮构建移动应用程序。路由器使用该方法更改视图。现在我想在从一个视图切换到另一个视图时添加动画。我试过这段代码,你可以帮个忙。

编辑: 我想添加经典动画,以便在iPhone上更改页面。我试着这样做:

查看:

var SettingsView = Backbone.View.extend({
tagName:  "section",
className: "pt",
initialize: function(){
},

render: function(){
  var template = _.template($('#settingsview-template').html(),{});
  this.$el.html(template);
  return this;
},


getAnimEndEventName: function(){
    var animEndEventNames = {
        'WebkitAnimation' : 'webkitAnimationEnd',
        'OAnimation' : 'oAnimationEnd',
        'msAnimation' : 'MSAnimationEnd',
        'animation' : 'animationend'
    };
    return animEndEventNames[ Modernizr.prefixed( 'animation' ) ];
},

open: function(){
var _this = this;
  this.$el.addClass("animated bounceInLeft");
},
close: function(){
    var _this = this;
    this.$el.addClass("animated bounceOutLeft").on(this.AnimEndEventName, function(){
    _this.removeClass("animated bounceInLeft, animated bounceOutLeft"); 
});
}
});

路线:

settingsViewPage: function(){              

   var view = new SettingsView(); 
   $(".container").html(view.render().el);
   this.currentView.close();
   view.open();
   this.currentView = view;            
},

我从控制台收到错误:

未捕获的TypeError:无法读取属性'关闭'未定义的

2 个答案:

答案 0 :(得分:0)

我不知道您想要使用哪种动画,但可以在渲染视图之前调用它。

路由器文件中的这类内容。

路线:{         "" :" startPage",         " PageHome" :" homePage",         " PageShow" :" showViewPage"     },

startPage: function(){
    //HERE START THE ANIMATION.
    var view = new StartView(); 
    $(".container").html(view.render().el);  
            // STOP THE ANIMATION            
},

homePage: function(){
    //HERE START THE ANIMATION.
    var view = new HomeView(); 
    $(".container").html(view.render().el);   
    // STOP THE ANIMATION           
},

答案 1 :(得分:0)

错误在这里完成,但我不明白在哪里

close: function(){
        var _this = this;
        this.$el.addClass("animated bounceOutLeft").on(this.AnimEndEventName, function(){
        _this.removeClass("animated bounceInLeft, animated bounceOutLeft"); 
    });