需要帮助理解的骨干嵌套意见的基础知识(Need help understanding the bas

2019-08-17 09:11发布

我已经做了一堆阅读有关Backbone.js的嵌套的意见,我理解它的良好的数额,但有一点一直困扰着我,这是...

如果我的申请有一个包含子视图像页面导航,页脚等中不使用应用程序的过程中改变外壳看法,我需要渲染每一路线壳还是我做一些在视图检查,看它是否已经存在?

看起来是这样对我,如果有人没有在应用程序中向前移动之前热播的“回家”的路线。

我还没有发现任何有关这是很有帮助的,我google搜索,所以任何建议表示赞赏。

谢谢!

Answer 1:

由于您的“壳”或“布局”视图永远不会改变,你应该使其在应用程序启动(前触发的任何路由),并呈现进一步意见布局视图。

比方说,你的布局看起来是这样的:

<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。 这也可能派上用场,如果你需要更改视图的呈现方式。



文章来源: Need help understanding the basics of nested views in backbone