1

我想通过更改 url 来更改我的主干应用程序的当前页面。我设置了路由,当我更改 url 时,我的页面正在更改,预计每次我访问给定路由时,都会向 dom 呈现一个新视图。

我的路由器:

myApp.Application = Backbone.Router.extend({

  routes: {
    ''      : 'home'
    //etc
  },

  initialize : function() {
    myApp.dom.$container = $('#container');
    myApp.dom.$container.empty();
  },

  home : function() {
    myApp.loginView = new myApp.views.home();
    myApp.dom.$container.append(myApp.home.render().el);
  }

  })

我是否认为我需要在渲染之前检查(例如)myApp.loginView 是否存在?

所以像:

  home : function() {
    if (!myApp.loginView) {}
      myApp.loginView = new myApp.views.home();
      myApp.dom.$container.append(myApp.home.render().el);
    } else {
      //just show it
    }
  }

..为我的每条路线都这样做?

谢谢!

4

1 回答 1

2

这看起来很湿,我宁愿做一些类似电话的事情isAlreadyRendered()

此外,当您的 myApp.views 似乎是类时,将所有内容都坚持到 myApp.SpecificName 似乎是错误的。

用什么初始化呢App.views.class = new App.Views.Class

然后创建一个工厂来启动视图,比如

function factory(className){
  if( App.views[className.toCamelCase()] ) return;
  App.views[className.toCamelCase()] = new App.Views[className].apply(App.Views, [].slice.call(arguments, 1))

}

类似的东西,我习惯于使用咖啡脚本,这也会使事情变得更容易。

apply 和 slice 以及所有这些,以便您应该能够在第一个之后将尽可能多的 args 传递给因素,尽管这都是我的想法,所以它可能是一个学习实验让它工作和了解使用 apply 和 call 的乐趣(如果你使用 coffeescript 你会更开心)

请享用!

于 2012-10-30T18:07:31.413 回答