Ember.js渲染到视图的出口

时间:2013-08-06 18:16:48

标签: javascript ember.js ember-router

我有一个在其中有一个命名插座的视图。此视图与控制器无关,不能用于我的用例。我似乎无法渲染到那个命名的插座。我如何正确定位它?

如果视图名为App.UnassociatedView,则指定的插座为{{outlet potatoOutlet}},我想要关联的控制器和视图分别为App.PotatoControllerApp.PotatoView,如何操作我做这个工作了吗?

我试过

App.ApplicationRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render();
        this.render('potato', {outlet: 'potatoOutlet', controller: this.controllerFor('potato')});
    }
});

App.ApplicationRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render();
        this.render('potato', {outlet: 'potatoOutlet', controller: this.controllerFor('potato'), into: 'application'});
    }
});

这个

App.ApplicationRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render();
        this.render('potato', {outlet: 'potatoOutlet', controller: this.controllerFor('potato'), into: 'unassociated'});
    }
});

这是一个小提琴:http://jsfiddle.net/wmarbut/X8Mu4/

为了清晰起见而编辑

我在小提琴的评论文本中有这个,但忘了把它放在这里。将插座移动到根级别对我来说不是一个选项b / c这样做的目的是让UnassociatedView在页面加载时实际生成出口。我的代码实际上是有效的,我只是无法连接它们。

1 个答案:

答案 0 :(得分:0)

我已经在某种程度上解决了你的问题。

App.IndexRoute = Ember.Route.extend({
  renderTemplate: function(){
    this._super();
    var controller = this.controllerFor('potato');
    this.render('potato', {outlet: 'potatoOutlet', controller: controller});
  }
})

http://jsfiddle.net/X8Mu4/5/

  • 将插座移至根级别
  • 将renderTemplate覆盖移动到IndexRoute(因为这是路由到的)
  • 启用LOG_TRANSITIONS以帮助调试路由

我建议不要将ApplicationView的模板覆盖为索引。导致混乱。

您也不必显式创建ApplicationView。请参阅:Do I have to explicitly create an `ApplicationView` and an `ApplicationController` for every Ember.js application?