Peter Kim
Peter Kim

Reputation: 203

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

In ember, is there a way to render a template into an outlet from a controller to get the desired effect of:

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

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

Upvotes: 1

Views: 108

Answers (2)

Kalman
Kalman

Reputation: 8131

Instead of outlet, you can use a component:

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

Then, in your controller, you can have a template property that you can pass to the component to display your template dynamically:

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

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

Working example here

Not completely sure what you mean by

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

but if you are just trying to transition into a different route, you can use the transitionToRoute() method (see here)

Upvotes: 1

flylib
flylib

Reputation: 1148

you can put a method in the corresponding route to the controller under the actions hash (Example: posts.index controller and posts.index route) and call it using send

posts.index controller

this.send('exampleAction', record);

posts.index route

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

Upvotes: 2

Related Questions