【发布时间】:2014-11-12 03:02:37
【问题描述】:
我遇到了一个问题,我无法让嵌套的插座在我的 Ember CLI 应用程序中正确显示。我想要的视图树如下:
- 应用程序(所有资源的列表,其中 client_availability 是其中之一)
- - client_availabilities.index(client_availabilities 列表)
- --client_availability(单个client_availability)
这与 Ember Starter Kit 中的“application > posts.index > post”层次结构非常相似。我想要的行为是,当我导航到 client_availabilities.index 时,client_availabilities 列表出现在“mainoutlet”中,然后当我在“suboutlet”中调出单个 client_availability 时持续存在。
很简单,对吧?这是默认行为,也是我们都喜欢 Ember 的原因。但是,我似乎无法让它工作。当我在 client_availabilities.index 中明确定位我命名的子插座并单击单个 client_availability 时,两个插座中都没有显示:
场景 1:在 client_availabilities 中渲染 suboutlet
/app/template/application.hbs:
{{link-to 'Client Availabilities' 'client_availabilities'}}
{{outlet 'mainoutlet'}}
/app/template/client-availabilities/index.hbs:
{{outlet 'suboutlet'}}
/app/routes/client-availabilities/index.js:
import Ember from 'ember';
export default Ember.Route.extend({
renderTemplate: function(){
this.render({
into: "application",
outlet: "mainoutlet"
});
},
model: function() {
return this.store.find('client_availability');
}
});
/app/routes/client-availability.js:
import Ember from 'ember';
export default Ember.Route.extend({
renderTemplate: function(){
this.render('client_availability', {
into: "client_availabilities",
outlet: "suboutlet"
});
},
model: function(params) {
return this.store.find('client_availability', params.client_availability_id);
}
});
或者,当我在应用程序中定位我的 mainoutlet 时,client_availability 出现在“suboutlet”中 client_availabilities.index 从“mainoutlet”中消失:
场景 2:在应用程序内渲染 suboutlet
/app/template/application.hbs:
{{link-to 'Client Availabilities' 'client_availabilities'}}
{{outlet 'mainoutlet'}}
{{outlet 'suboutlet'}}
/app/template/client-availabilities/index.hbs:(空)
/app/routes/client-availabilities/index.js:
import Ember from 'ember';
export default Ember.Route.extend({
renderTemplate: function(){
this.render({
into: "application",
outlet: "mainoutlet"
});
},
model: function() {
return this.store.find('client_availability');
}
});
/app/routes/client-availability.js:
import Ember from 'ember';
export default Ember.Route.extend({
renderTemplate: function(){
this.render('client_availability', {
into: "application",
outlet: "suboutlet"
});
},
model: function(params) {
return this.store.find('client_availability', params.client_availability_id);
}
});
这是我的路由器,两种情况都一样:
/app/router.js:
import Ember from 'ember';
var Router = Ember.Router.extend({
location: 'auto'
});
Router.map(function() {
this.resource('client_availabilities', function() {
this.resource('client_availability', { path: ':client_availability_id' });
});
});
export default Router;
我很乐意分享更多代码,但该应用程序被拆分为多个文件,很遗憾我无法完整发布。谁能看到我做错了什么?该应用程序的其余部分工作正常,我似乎无法让这个基本行为正常工作。
【问题讨论】: