Saturday, October 25, 2025
HomeLanguagesJavascriptEmber.js Evented on() Method

Ember.js Evented on() Method

Ember.js is an open-source JavaScript web framework that follows the Model-View-Controller (MVC) pattern. It provides conventions and best practices for organizing code and building user interfaces. Ember.js is used to build scalable, single-page web applications.

The on() method can register a callback function to be called when a specific event takes place. The Ember event system contains a function called on() which is helpful in many cases such as clicks.

Syntax : 

object.on(eventName, target, method);

 

Parameters: This method accepts three parameters that are described below:

  • eventName: It is a string that specifies the name of the event you want to listen for.
  • Target: It is the object which will be bound to the callback function.
  • Method: It is the name of the callback function.

Return Value: This method returns this.

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

Step 3 : Navigate into the newly created directory :

cd <project-name>

Step 4 : Generate a new component and template for the click counter:

ember g component <project-name>

This will create a new route file at app/components/<project-name>

Example 1: Add a new template in the file at app/templates/components/<project-name>.hbs. Open the <project-name>.hbs file and add a button element with an {{on}} helper that will trigger a click event.

@app/templates/components/<project-name>.hbs

Javascript




<p>Click Count = {{this.total}}</p>
  
<button type="button" {{on "click" (fn this.change 1)}}>
    Click
</button>


@app/components/<project-name>.js

Javascript




import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
  
export default class CounterComponent extends Component {
    @tracked count = 0;
  
    get total() {
        return this.count * this.args.multiple;
    }
  
    @action change(amount) {
        this.count = this.count + amount;
    }
};


Output: 

basic click counting application

Explanation: In this example, we define a component with a clickCount property that represents the number of times the component has been clicked. So whenever we click on the component, the click button will be increment by 1 every time. We use the on() method in this code is an event listener method used to bind a click event to the “Click” button. Every time the button is clicked, the change method will be executed with an argument of ‘1’.

Example 2: Type the following code to generate the component for this example:

ember g component <project-name>

@app/templates/components/<project-name>.hbs

HTML




<form {{on "submit" this.submitForm}}>
    <div>
        <label>
            Name :
            <input type="text" name="name" />
        </label>
    </div>
    <div>
        <label>
            Email :
            <input type="email" name="email" />
        </label>
    </div>
    <div>
        <label>
            City :
            <input type="text" name="text" / </label>
    </div>
    <div>
        <button type="submit">Submit</button>
    </div>
</form>


@app/components/<project-name>.js

Javascript




import Component from '@glimmer/component';
import { action } from '@ember/object';
  
export default class CounterComponent extends Component {
    @action submitForm() {
        alert("The form has been submitted");
    }
}


Output:

basic form application

Reference: https://api.emberjs.com/ember/4.11/classes/Evented/methods/on?anchor=on

Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, neveropen Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!
RELATED ARTICLES

Most Popular

Dominic
32361 POSTS0 COMMENTS
Milvus
88 POSTS0 COMMENTS
Nango Kala
6728 POSTS0 COMMENTS
Nicole Veronica
11892 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11954 POSTS0 COMMENTS
Shaida Kate Naidoo
6852 POSTS0 COMMENTS
Ted Musemwa
7113 POSTS0 COMMENTS
Thapelo Manthata
6805 POSTS0 COMMENTS
Umr Jansen
6801 POSTS0 COMMENTS