我已经做了一堆阅读有关Backbone.js的嵌套的意见,我理解它的良好的数额,但有一点一直困扰着我,这是...
如果我的申请有一个包含子视图像页面导航,页脚等中不使用应用程序的过程中改变外壳看法,我需要渲染每一路线壳还是我做一些在视图检查,看它是否已经存在?
看起来是这样对我,如果有人没有在应用程序中向前移动之前热播的“回家”的路线。
我还没有发现任何有关这是很有帮助的,我google搜索,所以任何建议表示赞赏。
谢谢!
我已经做了一堆阅读有关Backbone.js的嵌套的意见,我理解它的良好的数额,但有一点一直困扰着我,这是...
如果我的申请有一个包含子视图像页面导航,页脚等中不使用应用程序的过程中改变外壳看法,我需要渲染每一路线壳还是我做一些在视图检查,看它是否已经存在?
看起来是这样对我,如果有人没有在应用程序中向前移动之前热播的“回家”的路线。
我还没有发现任何有关这是很有帮助的,我google搜索,所以任何建议表示赞赏。
谢谢!
由于您的“壳”或“布局”视图永远不会改变,你应该使其在应用程序启动(前触发的任何路由),并呈现进一步意见到布局视图。
比方说,你的布局看起来是这样的:
<body>
<section id="layout">
<section id="header"></section>
<section id="container"></section>
<section id="footer"></section>
</section>
</body>
您的布局视图可能会是这个样子:
var LayoutView = Backbone.View.extend({
el:"#layout",
render: function() {
this.$("#header").html((this.header = new HeaderView()).render().el);
this.$("#footer").html((this.footer = new FooterView()).render().el);
return this;
},
renderChild: function(view) {
if(this.child)
this.child.remove();
this.$("#container").html((this.child = view).render().el);
}
});
那么您需要安装在应用程序启动的布局:
var layout = new LayoutView().render();
var router = new AppRouter({layout:layout});
Backbone.history.start();
而在你的路由器的代码:
var AppRouter = Backbone.Router.extend({
initialize: function(options) {
this.layout = options.layout;
},
home: function() {
this.layout.renderChild(new HomeView());
},
other: function() {
this.layout.renderChild(new OtherView());
}
});
有多种方法对皮肤这个特别的猫,但是这是我通常处理它的方式。 这给你控制(单点renderChild
)呈现你的“顶级”的意见,并确保以前的元素是remove
新的渲染之前d。 这也可能派上用场,如果你需要更改视图的呈现方式。