1

他のモデルからのイベントによってその状態を制御するには、モデル インスタンスによって window.location.hash を表す必要があります。また、アドレス文字列を入力して、ユーザーが手動でハッシュを変更することもできます。ユーザーの変更はアプリケーション内で変換する必要があり、アプリケーションは、ユーザーが表現する UI との対話に応じてハッシュを変更することもできます。この場合、ウィンドウハッシュを更新する方法を知っている人はいますか?

Hash = Backbone.Model.extend({
    initialize: function(){
        other_source.on('change', this.setHash, this);
        window.on('hashchange', this.update);//user may update hash manually in browser
        //window.on('hashchange', $.proxy(this.update, this)); - I tried this
        //_.bind(this.update, this); - and this
        // it doesn't work
    },
    update: function(data){
        //translate changes inside app
        this.clear();
        this.set(hashToObj(data));
        this.trigger('hash:changed', this.attributes);
    },
    setHash: function(){
        //Apply changes from inside app
        //I need to temporarily remove listening
        //because of inifinitive loop
        window.off('hashchange', this.update);
        window.location.hash = this.attributes;
        window.on('hashchange', this.update);
    }
})
4

0 に答える 0