5

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

用例:有一个users资源,new里面有一个路由。我希望new在应用程序{{outlet}}而不是父资源的{{outlet}}.

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

1 回答 1

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属性找到该插座的位置。

于 2013-01-31T13:06:01.640 回答