他のモデルからのイベントによってその状態を制御するには、モデル インスタンスによって 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);
}
})