ember.js - 在 router.js 中渲染一个模板,相当于控制器

ember.js - render a template in router.js equivalent for controllers

在 ember 中,有没有一种方法可以将模板渲染到控制器的出口中以获得所需的效果:

this.render('some_template', {
  into: 'template_name',
  outlet: 'template_outlet'
});

或者更好的是,从控制器调用 router.js 中的操作?

你可以在actions hash下面的controller对应的route中放置一个方法(例子:posts.index controller and posts.index route)然后使用send

调用它

posts.index 控制器

this.send('exampleAction', record);

posts.index路线

actions: {
  exampleAction: function(record){
       console.log(record);
  }
}

您可以使用组件代替插座:

<script type="text/x-handlebars" id="components/x-outlet">
  {{ partial template }}
</script>

然后,在您的控制器中,您可以有一个 template 属性,您可以将其传递给组件以动态显示您的模板:

App.IndexController = Ember.ArrayController.extend({
  template: function(){
    return 'this_one';
  }.property(),

  actions: {
    that_one: function(){
      this.set('template', 'that_one');
    }
  }
});

工作示例here

不太清楚你的意思

Or better yet, call an action in router.js from a controller?

但如果您只是想转换到不同的路线,您可以使用 transitionToRoute() 方法(参见 here