![]()
In AngularJS, the ng-init directive is used to initialize variables in the application’s scope. It allows developers to set default values for variables when the application starts. While ng-init can be useful for simple cases, it is generally recommended to use controllers for managing application logic.
In this guide, we will cover:
- What is
ng-init? - How
ng-initworks - Syntax and Basic Example
- Using
ng-initwith Arrays and Objects ng-initvs. Controller Initialization- Common Use Cases
- Limitations of
ng-init - Best Practices
- Conclusion
1. What is ng-init?
The ng-init directive initializes variables in AngularJS directly within the HTML view. It is commonly used to define simple data for testing or setting default values.
Key Features:
Initializes variables in the HTML template.
Works inside ng-app and ng-controller.
Supports simple variables, arrays, and objects.
Useful for small test cases.
2. How ng-init Works
When an AngularJS application loads, ng-init executes the given expressions and initializes the scope variables.
3. Syntax and Basic Example
Basic Syntax:
htmlCopyEdit<div ng-init="variableName = value"></div>
- The
ng-initdirective is placed inside an HTML element. - It assigns a default value to
variableName.
Basic Example:
<!DOCTYPE html>
<html lang="en">
<head>
<title>ng-init Example</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
</head>
<body ng-app="myApp">
<div ng-init="message='Hello, AngularJS!'">
<p>{{ message }}</p>
</div>
</body>
</html>
Explanation:
ng-init="message='Hello, AngularJS!'"initializes themessagevariable.- The
<p>tag displaysHello, AngularJS!using data binding ({{ message }}).
4. Using ng-init with Arrays and Objects
ng-init can also initialize arrays and objects.
Example: Initializing an Array
<div ng-init="fruits=['Apple', 'Banana', 'Mango']">
<ul>
<li ng-repeat="fruit in fruits">{{ fruit }}</li>
</ul>
</div>
Explanation:
- The
fruitsarray is initialized with three values. ng-repeatloops throughfruitsand displays them as a list.
Example: Initializing an Object
<div ng-init="person={name:'John', age:25}">
<p>Name: {{ person.name }}</p>
<p>Age: {{ person.age }}</p>
</div>
Explanation:
- The
personobject is initialized withnameandageproperties. - The values are displayed using
{{ person.name }}and{{ person.age }}.
5. ng-init vs. Controller Initialization
While ng-init is useful for simple cases, it is not recommended for complex logic. Instead, you should use an AngularJS controller.
Example: Using a Controller Instead of ng-init
<body ng-app="myApp" ng-controller="MyController">
<p>{{ message }}</p>
<script>
var app = angular.module("myApp", []);
app.controller("MyController", function($scope) {
$scope.message = "Hello from the Controller!";
});
</script>
</body>
Why use a controller instead?
Better organization of application logic.
Easier debugging and maintenance.
Controllers provide reusable and structured code.
6. Common Use Cases
Setting default values for variables.
Initializing small arrays or objects.
Quickly testing data binding in an HTML template.
Example: Setting Default Values for a Form
<form ng-init="user={name:'', email:''}">
<label>Name:</label>
<input type="text" ng-model="user.name"><br>
<label>Email:</label>
<input type="email" ng-model="user.email"><br>
<p>Entered Name: {{ user.name }}</p>
<p>Entered Email: {{ user.email }}</p>
</form>
Explanation:
- The
userobject is initialized with empty values. - As the user types,
ng-modelupdates the values in real time.
7. Limitations of ng-init
Not suitable for complex logic – Use controllers instead.
Difficult to debug when used extensively.
Not reusable – Cannot be shared across multiple views.
Performance issues when initializing large datasets.
Bad Example: Complex Initialization in ng-init
<div ng-init="products=[{name:'Laptop', price:1000}, {name:'Phone', price:500}]">
<ul>
<li ng-repeat="product in products">{{ product.name }} - {{ product.price }}</li>
</ul>
</div>
Better Approach: Use a Controller
<body ng-app="myApp" ng-controller="ProductController">
<ul>
<li ng-repeat="product in products">{{ product.name }} - {{ product.price }}</li>
</ul>
<script>
var app = angular.module("myApp", []);
app.controller("ProductController", function($scope) {
$scope.products = [
{ name: 'Laptop', price: 1000 },
{ name: 'Phone', price: 500 }
];
});
</script>
</body>
Why is this better?
Easier to manage and debug.
Can be extended with functions and events.
Improves application scalability.
