我一直在关注使用骨干和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”或其他东西来显示它,但必须有一个更好的方法。