要添加以前的答案,在您想要更改 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 在倾斜地图时从服务器重新加载所需的部分,但在更改缩放时不会。此外,更改参数不会将状态项推送到浏览器历史记录。