Backbone + jQuery Mobile - 性能有效的路由

时间:2014-03-21 10:16:03

标签: javascript jquery jquery-mobile mobile backbone.js

我一直在关注使用骨干和jqm的教程,其中包括禁用jqm路由器和使用骨干路由器,但我坦率地不喜欢它的路由方法:

var AppRouter = Backbone.Router.extend({

routes:{
    "":"home",
    "page1":"page1"
},

initialize:function () {
    // Handle back button throughout the application
    $("body").on('click', '.back', function(event) {
        window.history.back();
        return false;
    });
},

home:function () {
    console.log('#home');
    this.changePage(new HomeView());
},

page1:function () {
    console.log('#page1');
    this.changePage(new Page1View());
}

changePage:function (page) {
    $(page.el).attr('data-role', 'page');
    page.render();
    $('body').append($(page.el));
    $.mobile.changePage($(page.el), {changeHash:false, transition: $.mobile.defaultPageTransition, allowSamePageTransition:true});allowSamePageTransition:true});

它的作用是在每次散列更改时,它调用changePage来执行视图创建,模板渲染,通过将div附加到正文来创建div,以及将changePage添加到此新元素。

现在,这意味着在每次更改页面时都会创建一个div 。此外,每次更改页面时视图都不会更改,但仅在模型更改时才会更改,并且应在模型更改时触发“渲染”,并且渲染视图将存储在view.el中。 这里做的是在每个页面显示时调用渲染,即使页面仍然相同。

我如何告诉jqm显示带有转换的page.el,而不必每次都向身体添加或添加新的div?

我想把我的视图存储在一个数组或一个集合中,并告诉路由器将它们从那里拉出来,然后通过附加一个“临时div”或其他东西来显示它,但必须有一个更好的方法。

0 个答案:

没有答案