0

为可能表述不当的标题道歉。骨干网新手。

我在思考如何处理与视图相关的路线时遇到了麻烦。基本上我有一个视图(我们称之为ListView),根据它,使用不同的模板进行viewMode渲染。ItemViews它看起来像这样:

var ListView = Backbone.View.extend({

    // Cache a bunch of templates here

    viewMode: 'list', // Default is list

    render: function() {

        switch(this.viewMode) {
            case 'list':
                // Render ItemView based on list template
                break;

            case 'gallery':
                // Render ItemView based on gallery template
                break;

        }

        // Render all items in list
        this.collection.each(function(model, index) {
            new ItemView(); // Maybe pass viewMode as a parameter
        });

    }

});

我的目标是,每当ListView使用viewMode“列表”或“画廊”时,这应该反映在地址栏中,同样手动输入或单击指向例如mysite.com/page.html#items/list#items的链接/gallery应该呈现相同的结果。

有没有办法使这个过程自动化,或者以其他方式解决它?

4

1 回答 1

1

认为您的路由器将类似于:

var yourRouter = Backbone.Router.extend({

    routes: {
        "items/list":    "showList",
        "items/gallery": "showGallery"
    },


    showList: function() {
        listView.viewMode = "list"
        listView.render();
    }

    showGallery: function() {
        listView.viewMode = "gallery"
        listView.render();
    }

});

然后在您的视图事件中,您可以调用navigate路由器的方法。这将更新地址栏。

yourRouter.navigate("items/list")

于 2013-02-23T21:04:18.063 回答