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を使用するときはいつでも、これがアドレスバーに反映され、同様にmysite.com/page.html#items/listまたは#itemsにつながるリンクを手動で入力またはクリックすることです。 /galleryは同じ結果を表示するはずです。viewMode

このプロセスを自動化する方法、または他の方法で解決する方法はありますか?

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 に答える