私は入れ子にされたコンポーネントを持っています。すべてのコンポーネントには、そのネストされたコンポーネントを表示するボタンがあります。問合せを行わずにember計算モデルデータをネストしたコンポーネントに渡すにはどうすればよいですか?
コントローラからは、すべてのコンポーネントを通じてselectboxオプション(ストアのクエリ)を渡します。しかし、selectboxを使って最終的なコンポーネントを表示/描画する前に、クエリが実行されます。実際のクエリは、このプロパティを持つ第2コンポーネントが描画される瞬間に実行されます。
selectboxを描画するために本当に必要となるまでクエリを実行しない方法はありますか?私は、ネストされたコンポーネント自体にストアプロパティをまっすぐ持っていないようにしました。 kumkanillamによって示唆されるように
EDITED
、彼のソリューションはかなりうまく働いていた、ここにアイデアを得るためのコードです。 controlerで
:
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"));
}
}
のcontrolerのHBSで {{#task-list
allReactionTimes=reactionTimesForOptions
initialiseRatingOptionsData=(action "initialiseRatingOptionsData")}
{{/task-list}}
その後、次の2つのネストされたコンポーネントに必要があるかをクリックして、私のコンポーネントを示すの時点で
allReactionTimes=allReactionTimes
initialiseRatingOptionsData=initialiseRatingOptionsData
そしてfinnalyで最終的な構成要素を表示することを決定するコンポーネント内のデータベースからのデータを有する
toggleRatingScreen(){
this.initialiseRatingOptionsData(); /* at this point query are done since needed only at this point*/
....
「計算モデルデータ」とはどういう意味ですか?あなたは 'selectbox options'を参照していますか? – kumkanillam
コントローラーのように: allWorkQualities:function(){ return this.get( "store")。findAll( "work-quality"); } .property( "store")、 "計算された"単語を削除する必要があります。 –