![]()
AngularJS follows the Model-View-Controller (MVC) architecture, which helps in structuring applications efficiently by separating concerns. It ensures maintainability, testability, and scalability of web applications.
What is MVC Architecture?
MVC is a design pattern used to separate the application’s data (Model), UI (View), and business logic (Controller).
| Component | Role |
|---|---|
| Model | Manages the data and business logic |
| View | Displays the data (UI) to the user |
| Controller | Handles user inputs and updates Model/View accordingly |
This architecture enables reusability and separation of concerns, making applications easier to manage and scale.
MVC in AngularJS
In AngularJS, the MVC pattern is implemented slightly differently, using a MVW (Model-View-Whatever) architecture where the Controller handles both logic and data binding.
1️⃣ Model (Data Layer)
- The Model represents the application’s data.
- In AngularJS, data is typically stored in JavaScript objects or services.
- It interacts with the Controller and is updated via
$scopeor Angular services.
Example of a Model in AngularJS
var app = angular.module("myApp", []);
app.controller("MainController", function ($scope) {
$scope.user = {
name: "John Doe",
age: 30
};
});
Here, $scope.user is the Model, holding user data.
2️⃣ View (Presentation Layer)
- The View is responsible for displaying data from the Model.
- Uses HTML templates with Angular directives (
ng-model,ng-bind, etc.) to bind data dynamically.
Example of a View in AngularJS
<div ng-app="myApp" ng-controller="MainController">
<h2>User Details</h2>
<p>Name: {{ user.name }}</p>
<p>Age: {{ user.age }}</p>
</div>
Here, {{ user.name }} and {{ user.age }} bind the Model’s data to the View.
3️⃣ Controller (Logic Layer)
- The Controller acts as a bridge between the Model and View.
- It defines functions and logic to manipulate data.
- Uses
$scopeto bind data and functions to the View.
Example of a Controller in AngularJS
app.controller("MainController", function ($scope) {
$scope.user = {
name: "John Doe",
age: 30
};
// Function to update user details
$scope.updateUser = function () {
$scope.user.name = "Jane Smith";
$scope.user.age = 28;
};
});
Now, we can add a button in the View to call updateUser():
<button ng-click="updateUser()">Update User</button>
Clicking the button updates the user object, reflecting instantly in the View due to two-way data binding.
AngularJS MVC Flow
1️⃣ User interacts with the View (e.g., clicks a button).
2️⃣ The Controller processes the input and updates the Model.
3️⃣ The Model updates automatically due to AngularJS’s two-way data binding.
4️⃣ The updated Model reflects in the View instantly.
Advantages of MVC in AngularJS
Separation of Concerns – Easier to manage and scale.
Code Reusability – Different components (Model, View, Controller) can be reused.
Two-Way Data Binding – Reduces the need for manual DOM manipulation.
Easier Testing – Isolated logic makes unit testing simpler.
