我想在queryParams发生变化时重新加载我的模型。 queryParams更改反映在URL中,但模型重新加载没有发生。我按照ember.js指南(https://guides.emberjs.com/v2.6.0/routing/query-params/)进行全面过渡。我在我的控制器中声明了我的queryParams
MarkerClusterer.CALCULATOR = function (markers, numStyles) {
var index = 0;
var title = "";
var count = markers.length.toString();
var valueToSum=0;
for(var m=0;m<markers.length;m++){
//This is the custom property called MyValue
valueToSum+=Number(markers[m].MyValue);
}
var dv = val;
while (dv !== 0) {
dv = parseInt(dv / 10, 10); //you could define your own rules
index++;
}
index = Math.min(index, numStyles);
return {
text: valueToSum,
index: index,
title: title
};
};
我从一个组件调用updatePage,该组件根据复选框选择将params传递为true或false。该组件从application.hbs文件中调用,如下所示
//controllers/service/service.js
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams:['showFriends']
});
//routes/service/service.js
model(params){
return this.store.query('service', params);
},
actions:{
updatePage(params){
this.transitionTo('service',{queryParams:{showFriends:params}});
},
},
queryParams:{
showFriends:{
refreshModel:true
}
},
如果我从我的路线中删除了refreshModel:true,我看到URL正在更新,但我的模型没有重新加载(正如根据文档所预期的那样)。
因为,我正在进行全面转换,我添加了行refreshModel:true,这给了我错误
{{test-component model=model updatePage="updatePage"}}
我在这个问题上花了两天多时间但没有用。任何遇到过类似问题或者对如何解决这个问题有任何想法的人都会对我有很大的帮助。提前致谢
答案 0 :(得分:1)
将queryParams:{
showFriends:{
refreshModel:true
}
}
放入相应的路线中。
路由负责获取模型,因此它应该在那里
答案 1 :(得分:1)
回答我自己的问题,想一想有人面临同样的问题。解决方案很简单,但你知道找出正确的位置是一项艰巨的任务。
我已将一项服务注入我的所有路由中,并且该服务的名称为&#34; refresh&#34;。当我在路由中调用refreshModel:true时,我们都知道后端的ember会调用this.refresh()方法。
但是,在我的情况下,已经在应用程序中注入了具有刷新名称的服务,ember没有调用路径的this.refresh()方法而是调用注入的服务,这显然不是方法。
所以,它给我一个错误this.refresh不是一个函数。 Ember会更具体地给出这个错误,但是对于任何人来说都难以期待这种情况。无论如何,感谢所有提供解决方案的人,他们指导我走上了正确的道路。