我有嵌套组件。每个组件都有按钮来显示其嵌套组件。
从控制器我通过所有组件传递选择框选项(商店查询)。但是在使用selectbox的最终组件甚至显示/绘制之前完成查询。在绘制具有此属性的第二个组件时,实际查询其完成。
有没有办法不做查询,直到它真的需要绘制选择框?我不想直接在嵌套组件中存储属性。
EDITED
正如 kumkanillam 所建议的那样,他的解决方案效果很好,这里有代码可以实现这个想法。
在控制器中:
reactionTimesForOptions: null,
allReactionTimes: function() {
return this.get("store").findAll("reaction-time");
}.property("store"),
actions:{
initialiseRatingOptionsData(){
if(Ember.isEmpty(this.get("reactionTimesForOptions"))) {
this.set("reactionTimesForOptions", this.get("allReactionTimes"));
}
}
in controler hbs
{{#task-list
allReactionTimes=reactionTimesForOptions
initialiseRatingOptionsData=(action "initialiseRatingOptionsData")}
{{/task-list}}
然后在接下来的2个嵌套组件中
allReactionTimes=allReactionTimes
initialiseRatingOptionsData=initialiseRatingOptionsData
最终点击并显示需要从数据库获取数据的组件,在组件中决定显示最终组件
toggleRatingScreen(){
this.initialiseRatingOptionsData(); /* at this point query are done since needed only at this point*/
....
答案 0 :(得分:1)
您可以从控制器传递空的selectbox选项属性以及将更新updateSelectboxOptions
选项的函数selectbox
,并在需要数据时在嵌套组件中调用updateSelectboxOptions
。