URLを変更したいときにURLを変更するという単純なアプローチを使用する以前の回答に追加するには、現在のEmberバージョンでは、クエリパラメーターをコントローラープロパティにリンクするオプションがあります。
Emberガイドページからコンパイルされた簡単な例:
App.MapController = Ember.ObjectController.extend({
queryParams: ['zoom', {latitude: 'lat'}, {longitude: 'lon'}],
zoom: 10,
latitude: null,
longitude: null,
mapWindowChanged: function {
MapApi.reposition(this.zoom, this.latitude, this.longitude);
}.observes('zoom','latitude','longitude')
});
このようにクエリ パラメーターを使用する場合、コントローラー/ビュー コードはバインドされたコントローラー プロパティを変更するだけで、クエリ パラメーターは自動的に更新されます。
Ember.Route queryParams プロパティを使用して、次のようにクエリ パラメータがルート イベントに影響を与える方法を変更します。
App.MapRoute = Ember.Route.extend({
queryParams: {
lat: {
refreshModel: true,
replace: true,
},
long: {
refreshModel: true,
replace: true,
},
zoom: {
replace: true
}
}
});
これにより、Ember はマップを傾けるときにサーバーから必要なパーツをリロードするように指示されますが、ズームを変更するときにはそうではありません。また、パラメーターを変更しても、状態項目はブラウザーの履歴にプッシュされません。