1

I am new guy to emberjs, I want to know flow of request in emberjs. There are some query related to emberjs:

  • what is specific role of controller in emberjs, wherever I have seen we can create action in template.

  • There is standard naming convention and association between controller, routes and view, but how can to associate a controller, routes and views.

  • how to flow control when a request process?

    • a routes handover control to a controller or
    • a controller handover control to routes.

    if we want to associate a controller and a routes manually then how to associate.

Jack Jam
  • 11
  • 1

1 Answers1

0

what is specific role of controller in emberjs, wherever I have seen we can create action in template.

Controller is connecting your model with view like in MVC pattern. In Ember.JS you can use controller to keep your logic that will be used on one particular module, manage dependencies or store conditions. In templates you can use only simple conditions (without and/or), so whenever you need some more complex condition you should put in inside controller. For instance

App.PersonController = Ember.ObjectController.extend({
   isPersonRich: function() {
      return @get('person.money') > 1000000 && @get('person.isReal')
   }.property('person.money', 'person.isReal')
});

So I person that is not fictional and have more 1 000 000 assets is rich.

{{#if isPersonRich}}
    <p>This person is rich!</p>
{{/if}}

There is standard naming convention and association between controller, routes and view, but how can to associate a controller, routes and views.

Route usually fetch data from your backend.

App.PersonRoute = Ember.Route.extend({
   model: function(params) {
      this.store.find('person', params.person_id); 
   }
});

Each time when you enter the persons route ember is going to make call to your api (using ember data in this case) to find given person. Moreover, it's going to display loading route in this case and give you some fallback after failure.

PersonView would be the place where you can put your jQuery code that is going to be executed after template would be successfully rendered.

App.PersonView = Ember.View.extend({
   didInsertElement: function() {
      this.$().find('*[data-toggle=tooltip]').tooltip();  
   }
});

In this example I am adding bootstrap tooltip to template.

how to flow control when a request process?

Route is procceded before controller, you have even setupController method inside each route that set model to the controller by default.

if we want to associate a controller and a routes manually then how to associate.

You can overwrite setupController method and eventually renderTemplate. There is nothing more to do. I advice you to stick to ember name conventions.

Additionaly take a look that if your controller is not going to handle fired action it is going to propagate to your route.

Mateusz Nowak
  • 4,021
  • 2
  • 25
  • 37