如何在不查询的情况下将 ember 计算模型数据传递给嵌套组件?
How to pass ember computed model data to nested component without querying?
我有嵌套组件。每个组件都有按钮来显示其嵌套组件。
我从控制器通过所有组件传递选择框选项(商店查询)。但是查询是在带有选择框的最终组件甚至 shown/drawn 之前完成的。真正的查询是在绘制带有此 属性 的第二个组件时完成的。
有没有办法在真正需要绘制选择框之前不进行查询?我不想直接在嵌套组件本身中存储 属性。
已编辑
正如 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"));
}
}
在控制器 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*/
....
您可以从控制器传递空的选择框选项 属性 以及将更新 selectbox
选项的函数 updateSelectboxOptions
,在嵌套组件中,当您需要数据时,您可以调用 updateSelectboxOptions
。
我有嵌套组件。每个组件都有按钮来显示其嵌套组件。
我从控制器通过所有组件传递选择框选项(商店查询)。但是查询是在带有选择框的最终组件甚至 shown/drawn 之前完成的。真正的查询是在绘制带有此 属性 的第二个组件时完成的。
有没有办法在真正需要绘制选择框之前不进行查询?我不想直接在嵌套组件本身中存储 属性。
已编辑
正如 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"));
}
}
在控制器 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*/
....
您可以从控制器传递空的选择框选项 属性 以及将更新 selectbox
选项的函数 updateSelectboxOptions
,在嵌套组件中,当您需要数据时,您可以调用 updateSelectboxOptions
。