Ember.js:将子资源的视图插入主应用程序的插座

时间:2013-01-31 12:22:51

标签: ember.js

默认情况下,Ember将子资源的视图插入由父资源视图定义的{{outlet}}。我该如何覆盖呢?即将子视图插入应用程序视图定义的{{outlet}}中。为什么这是默认值?

用例:有users个资源,其中包含new路由。我希望new显示在应用{{outlet}}中,而不是父资源的{{outlet}}

App.Router.map(function(){
  this.resource('users', function(){
     this.route('new');
  });
});

1 个答案:

答案 0 :(得分:14)

对于每条路线,我们都有一个renderTemplate方法,我们可以重载。这使我们完全控制视图的呈现。

例如,我们可以指定视图将使用{{outlet}}呈现的into

(我认为这是你的用例,但今天我有点心不在焉。)

var UsersRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render('users', {
            // Render the UsersView into the outlet found in application.hbs
            into: 'application'
        });
    }
});

我们还可以指定要使用outlet属性渲染的插座名称:

var UsersRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render('users', {
            // Render the UsersView into the outlet named "sidebar"
            outlet: 'sidebar'
        });
    }
});

当然,我们可以使用两者的组合来指定插座的名称,以及使用into属性找到该插座的位置。