Ember似乎正在从网址中删除查询字符串。
我已经完成了代码,我确信我正确设置了标志:
<script>
ENV = {FEATURES: {'query-params-new': true}};
</script>
<script src="js/libs/ember.prod-1.6.0beta+canary.js"></script>
但是当我的路由加载时,查询字符串被删除,我无法访问queryParams。
这是我的路由器:
App.Router.map(function () {
this.resource('simpleSearch', {path: 'simplesearch'}, function () {
this.resource('simpleSearchOption', {path: ':simpleSearchOption_id'});
this.resource('simpleSearchResults', {path: 'results'});
});
});
当我尝试以下网址(which is based on the URL from the guide)时,查询字符串将被删除:[webserver]/#/simplesearch/0?simplesearch[height]=10
当模型首次由路由初始化时,它会构建查询参数,控制器的queryParams
属性由路径设置:
App.SimpleSearchRoute = Ember.Route.extend({
model: function () {
var optionsForSimpleSearchModel = [];
for (var i = 0; i < App.SimpleSearchOptions.length; i++) {
optionsForSimpleSearchModel[i] = App.SimpleSearchOption.create(App.SimpleSearchOptions[i]);
}
return App.SimpleSearch.create({
'simpleSearchOptions': optionsForSimpleSearchModel,
'numOfOptions': App.SimpleSearchOptions.length
});
},
setupController: function (controller, model) {
console.log(model.get('queryParams'));
controller.set('queryParams', model.get('queryParams'));
controller.set('model', model);
}
});
但是,我也尝试在控制器中明确设置queryParams
:
App.SimpleSearchController = Ember.ObjectController.extend({
height: null,
queryParams: ['height'],
...
我不确定我还缺少什么...
这件事真的有用吗?
看来我是个傻哥。
我需要将params
参数添加到model()
函数:
model: function (params) {
console.log(params);
//{height: null} when queryParams['height'] is explicitly set in the controller
如果我没有明确设置它们,有没有办法在Ember决定没有控制器之前为控制器动态生成queryParams?
另外,我的网址不正确(就像在Ember指南中一样)。应该是:
[webserver]/#/simplesearch/0?height=10
而不是
[webserver]/#/simplesearch/0?simplesearch[height]=10
答案 0 :(得分:1)
在模型钩子中,你需要传递参数。
App.SimpleSearchRoute = Ember.Route.extend({
model: function (params) {
return this.store.findQuery('simpleSearch', params);
}
});
以下是同一行的another question。
干杯