我建议从路由传递数据下来,无论是使用一个或多个其他服务(由同一作者也)检索数据。可以通过填充提供给具有单独请求的组件的模型来部分呈现模板。这种代码的好地方是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