我建議從路由傳遞數據下來,無論是使用一個或多個其他服務(由同一作者也)檢索數據。可以通過填充提供給具有單獨請求的組件的模型來部分呈現模板。這種代碼的好地方是setupController
。通常,如果兩個組件之間存在邏輯耦合,例如顯示特定廣告的組件,則通常只會向組件添加對服務的調用。
粗糙例如, http://emberjs.jsbin.com/netesehasi/1/edit?html,js,output
JS
...
App.IndexRoute = Ember.Route.extend({
model:function(){
return {dataForA:null,dataForB:null,dataForC:null};
},
setupController:function(controller,model) {
this._super.apply(arguments);
// simulate fetching data
setTimeout(function(){
Ember.set(model,'dataForA', 'this is data for component a');
controller.set('model', model);
},2000);
setTimeout(function(){
Ember.set(model,'dataForB', 'this is data for component b');
controller.set('model', model);
},1000);
setTimeout(function(){
Ember.set(model,'dataForC', {error:'error for component c'});
controller.set('model', model);
},3000);
}
});
...
HBS
...
<script type="text/x-handlebars" data-template-name="components/comp-a">
{{#if data}}
{{data}}
{{else}}
loading...
{{/if}}
</script>
<script type="text/x-handlebars" data-template-name="components/comp-b">
{{#if data}}
{{data}}
{{else}}
loading...
{{/if}}
</script>
<script type="text/x-handlebars" data-template-name="components/comp-c">
{{#if data}}
{{#if data.error}}
{{data.error}}
{{else}}
{{data}}
{{/if}}
{{else}}
loading...
{{/if}}
</script>
...
downvoting時的任何解釋,將不勝感激。我很想交換意見,謝謝! – melc