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


从URL哈希提取站点ID。 URL是通过以下模式构建的:

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


问题是-我是否可以在这里使用路由器本身(如果可以,那么如何使用?)还是不能使用,应该使用普通的JS方式进行解析?当然,路由器和视图是两个不同的对象,并且位于不同的文件/作用域中。


将site_id保存在模型中。但是我不确定如何从路由器存储它。我想我可以创建一个模型实例,在路由器作用域内将其设置为变量,然后像往常一样对待它,如下所示:



(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


仅从路由器向按钮分配data-site_id属性。但这似乎不是最佳做法,对吗?


那么您有什么建议?

最佳答案

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

http://backbonejs.org/#View-constructor

10-05 21:15
查看更多