Ember.js Route setupController() Method
Ember.js is an open-source JavaScript framework used for developing large client-side web applications based on Model-View-Controller (MVC) architecture. Ember.js is one of the most widely used front-end application frameworks. It is made to speed up development and increase productivity. Currently, it is utilized by a large number of websites, including Square, Discourse, Groupon, Linked In, Live Nation, Twitch, and Chipotle.
The setupController() method is used to set up the controller for the current route.
Syntax:
setupController( controller, model, transition );
Parameters:
- controller: It is the controller instance.
- model: It is set to the model property of the controller.
- transition: It is an ember transition.
Return type: The method doesn’t return any value.
Steps to Install and Run Ember.js:
Step 1: To run the following examples you will need to have an ember project with you. To create one, you will need to install ember-cli first. Write the below code in the terminal:
npm install ember-cli
Step 2: Now you can create the project by typing in the following piece of code:
ember new <project-name> --lang en
To start the server, type:
ember serve
Example 1: Type the following code to generate the route for this example:
ember generate route setupController1
app/routes/setupController1.js
Javascript
import Route from '@ember/routing/route' ; import EmberObject from '@ember/object' ; export default class FruitsRoute extends Route { fruits = [ EmberObject.create({ name: 'Lady Finger' , isFruit: false , color: 'green' , }), EmberObject.create({ name: 'Brinjal' , isFruit: false , color: 'purple' , }), EmberObject.create({ name: 'Apple' , isFruit: true , color: 'red' , }), EmberObject.create({ name: 'Grapes' , isFruit: true , color: 'green' , }), EmberObject.create({ name: 'Mango' , isFruit: true , color: 'yellow' , }), EmberObject.create({ name: 'Watermelon' , isFruit: true , color: 'red' , }), EmberObject.create({ name: 'Orange' , isFruit: true , color: 'orange' , }), ]; item2; item3; model() { this .set( '[]' , this .fruits); return this ; } setupController(controller, model) { super .setupController(controller, model); controller.set( 'fruits' , this .fruits); } } |
app/controllers/setupController1.js
Javascript
import Ember from 'ember' ; import { addObject, isAny, isEvery } from '@ember/array' ; import EmberObject from '@ember/object' ; export default Ember.Controller.extend({ actions: { insertItem(data) { let temp2 = '' ; this .fruits.forEach( (item) => (temp2 += item.getProperties(data)[data] + '\n' ) ); alert(temp2); }, flip() { let data = this .fruits.reverseObjects(); this .fruits.forEach((item, idx) => item.setProperties(temp2.at(idx))); }, }, }); |
app/templates/setupController1.hbs
HTML
{{page-title "setupController"}} < h3 >Fruit's Lists :</ h3 > < table > < tr > < th >name</ th > < th >isFruit</ th > < th >color</ th > </ tr > {{#each this.fruits as |detail|}} < tr > < td >{{detail.name}}</ td > < td >{{detail.isFruit}}</ td > < td >{{detail.color}}</ td > </ tr > {{/each}} </ table > < br /> < div > < label >Enter Attribute: </ label > {{input value=this.item3}} </ div >< br /> < div > < input type = "button" id = "print-item" value = "Print Attribute's value" {{action "insertItem" this.item3}} /> </ div > < br /> < div > < input type = "button" id = "flip-student" value = "Flip List" {{action "flip"}} /> </ div > {{outlet}} |
Output:
.gif)
setupController output1
Example 2: Type the following code to generate the route for this example:
ember generate route setupController2
app/routes/setupController2.js
Javascript
import Route from '@ember/routing/route' ; import Ember from 'ember' ; import EmberObject from '@ember/object' ; import EmberResolver from 'ember-resolver' ; export default class PartyRoute extends Route { students = [ EmberObject.create({ Name: 'Balit' , skill: 'Python' , Id: 'stu2' , gender: true , }), EmberObject.create({ Name: 'Yashu' , skill: 'PHP' , Id: 'stu0' , gender: false , }), EmberObject.create({ Name: 'Sam' , skill: 'R' , Id: 'stu1' , gender: true , }), EmberObject.create({ Name: 'Pokhu' , skill: 'JavaScript' , Id: 'stu3' , gender: true , }), EmberObject.create({ Name: 'Tanu' , skill: 'Java' , Id: 'stu4' , gender: false , }), EmberObject.create({ Name: 'Arabh' , skill: 'c++' , Id: 'stu5' , gender: true , }), ]; model() { return this .students; } setupController(controller, model) { super .setupController(controller, model); controller.set( 'students' , this .students); controller.set( 'temp' , this .temp); } } |
app/controllers/setupController2.js
Javascript
import Controller from '@ember/controller' ; import { action, find } from '@ember/object' ; import Ember from 'ember' ; export default class Array2Controller extends Controller { @action print() { let temp2 = '' ; this .students.forEach( (item) => (temp2 += item.getProperties( 'Name' )[ 'Name' ] + '\n' ) ); alert(temp2); } @action flip() { let temp2 = this .students.reverseObjects(); this .students.forEach((item, idx) => item.setProperties(temp2.at(idx))); } } |
app/templates/setupController2.hbs
HTML
{{page-title "setupController"}} < h3 > List of Students: </ h3 > < table > < tr > < th >Name</ th > < th >skill</ th > < th >Id</ th > < th >Gender</ th > </ tr > {{#each this.students as |detail|}} < tr > < td >{{detail.Name}}</ td > < td >{{detail.skill}}</ td > < td >{{get detail "Id"}}</ td > < td >{{if detail.gender "Male" "Female"}}</ td > </ tr > {{/each}} </ table > < br /> < input type = "button" id = "set-code" value = "Print Student details" {{action "print"}} /> < br /> < br /> < br /> < input type = "button" id = "flip-student" value = "Flip List" {{action "flip"}} /> |
Output:
.gif)
setupController output2
Reference: https://api.emberjs.com/ember/4.6/classes/Route/methods/setupController?anchor=setupController
Please Login to comment...