骨干路由器,视图&模范合作

时间:2015-11-16 10:55:14

标签: javascript backbone.js view model url-routing

我的视图包含一些按钮。当该视图被激活时,它应该采用一些URL参数(在我的情况下 - 站点ID)并将其设置为按钮属性“data-site_id”。应用程序中也有一个路由器。但我不知道如何以最好的方式实现它。直到现在我看到3个假想的解决方案:

  1. 从网址哈希中提取网站ID。 URL是通过这样的模式构建的:

    “sites / edit /:id(/:tab)”:“editSite”,

  2. 问题是 - 我可以在这里使用路由器本身(如果是,那么如何?)或者不能,并且应该用常见的JS方式解析它?当然,路由器& view是两个不同的对象,位于不同的文件/范围中。

    1. 将site_id保存在模型中。但我不确定如何从路由器存储它。我想我可以创建一个模型实例,在路由器范围下将其设置为变量,然后像往常一样对待它,如下所示:
    2. (function(app, $, config, _) {
      
          var Model = new app.modelName();
      
          var Router = app.Router = Backbone.Router.extend({
              routes: {
                  "": "start",
              //....
              "sites/edit/:id(/:tab)": "editSite",
              //...
          },
          //....
      
          editSite: function(id, tab){
              Model.set('site_id', id);
          }
      
        //.... 
      })(window.Application, jQuery, window.chatConfig, _);
      

      之后,我可以随时从模型中提取网站ID

      1. 仅从路由器为按钮分配data-site_id属性。但这看起来不是最佳做法,对吗?
      2. 那你的建议是什么?

1 个答案:

答案 0 :(得分:1)

您的第二个建议解决方案最有意义,然后您可以实例化将该模型传递给构造函数的视图。

请参阅http://backbonejs.org/#View-constructor