我在下面定义了一个容器视图
app.MainView = Ember.ContainerView.extend({
childViews: ['navigationView', 'gutterView', 'mainView'],
elementId: 'master',
navigationView: app.NavView,
gutterView: app.GutterView,
mainView: Ember.View.create({
elementId: 'content',
template: Ember.Handlebars.compile('{{outlet contentOutlet}}')
})
});
app.NavView = Ember.View.extend({
elementId: 'main-menu',
classNames: ['navigationPanel'],
template: Ember.Handlebars.compile('{{controller}}')
});
app.NavController = Ember.ArrayController.extend({
content: [],
});
这里的问题是,当我这样定义它时,app.NavView (app.NavController) 的控制器没有连接到视图。如果我通过模板查看 NavView 的 {{controller}},我会得到 ApplicationController。
但是当我这样定义它时:
app.MainView = Ember.ContainerView.extend({
childViews: ['navigationView', 'gutterView', 'mainView'],
elementId: 'master',
navigationView: Ember.View.extend({
elementId: 'nav',
template: Ember.Handlebars.compile('{{outlet navOutlet}}')
}),
gutterView: app.GutterView,
mainView: Ember.View.create({
elementId: 'content',
template: Ember.Handlebars.compile('{{outlet contentOutlet}}')
})
});
并通过路由器中的 connectOutlet 连接 NavView
router.get('applicationController').connectOutlet('navOutlet', 'nav');
我知道 NavView 中连接的控制器是 NavController,这是正确的!
问题是,我在这里缺少什么?我不想在这里有一个插座,而是希望通过 mainView 创建它。为什么当我使用 ContainerView 时,Ember 没有正确连接 View 和 Controller?