Làm quen với AngularJS
Các đặc tính của AngularJS
- AngularJS là một Framwork phát triển dựa trên Javascript để tạo các ứng dụng web phong phú
- AngularJS thường dùng để phát triển frontend (giao diện khách hàng) thông qua các API để gọi data, sử dụng mô hình MVC rất mạnh mẽ
- Mã nguồn AngularJS tự động fix với các trình duyệt khác nhau nên bạn không cần phải lo vấn đề tương thích trình duyệt
- Angular là mã nguồn mở, hoàn toàn miễn phí và được phát triển bởi hàng ngàn các lập trình viên trên thế giới.
- Chung quy lại có thể hiểu khi làm việc với AngularJS giống như là đang làm việc với Ajax, sử dụng cớ chế bind data, hoạt động theo mô hình MVC và sử dụng service để tương tác với dữ liệu từ server. Để rõ hơn thì chúng ta tìm hiểu các tính năng cố lõi của nó nhé.
Các tính năng code lõi của AngularJS
-
Sau đây là các tính năng cố lõi quan trọng trong AngularJS
- Data-binding: (liên kết dữ liệu) tự động đồng bộ dữ liệu giữa model và view
- Scope: (Phạm vi) Đây là những đối tượng kết nối giữa Controller và View
- Controller: Đây là những hàm javascript xử lý kết hợp với bộ điều khiển Scope
- Service: Như tôi đề cập ở trên, AngularJS sử dụng các API được xây dựng từ các web service (PHP, ASP) để thao tác với DB.
- Filters: Bộ lọc lọc ra các thành phẩn của một mảng và trả về mảng mới
- Directives: đánh dấu vào các yếu tố của DOM, nghĩa là sẽ tạo ra các thẻ HTML tùy chỉnh
- Templates: hiển thị thông tin từ controller, đây là một thành phần của views
- Routing: chuyển đổi giữa các action trong controller
- MVC: Mô hình chia thành phần riêng biệt thành Model, View, Controller. Đây là một mô hình khá hay nhưng trong Angular thì nó được chế biến lại một chút gần giốn với MVVM (Model View View Model)
- Deep Linking: Liên kết sâu, cho phép bạn mã hóa trạng thái của ứng dụng trong các URL để nó có thể đánh dấu được với công cụ tìm kiếm.
- Dependency Injection: Angular giúp các nhà phát triển tạo ứng dụng dễ dàng hơn để phát triển, hiểu và thử nghiệm dễ dàng.
-
Sau đây là hình ảnh mô hình cac thành phần quan trọng trong AngularJS:
AngularJS là một JavaScript framework
AngularJS là một JavaScript framework, thư viện của nó được viết bằng JavaScript.
Bài trước, bạn đã tải được file angular.min.js, bây giờ bạn có thể thêm vào một trang html bằng script tag.
1
|
< script src = "E:\AngularJS\lib\angular.min.js" ></ script > |
Hoặc là bạn có thể sử dụng thư viện angularJS online bằng đoạn script sau:
1
|
|
Phần mở rộng html của angularJS
angularJS extends HTML với ng-directives.
ng-app directive :Khi chúng ta khai báo một Directive ng-app
thì AngularJS sẽ hiểu là bắt đầu một ứng dụng Angular.
The ng-model directive :là một Directive dùng để liên kết dữ liệu với client, nghĩa là nó thường được dùng để cho người dùng nhập liệu.
The ng-bind directive : Dùng để bind (liên kết) data từ model lên view.
Ví dụ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<! DOCTYPE html> < html > < body > < div ng-app = "" > Name: < input type = "text" ng-model = "name" > < p ng-bind = "name" ></ p > </ div > </ body > </ html > |
Giải thích ví dụ:
AngularJS sẽ được tự động start khi web page được load.
ng-app directive: nói rằng thẻ div đó là chủ nhân của một AngularJS application.
ng-model directive : sẽ binds (liên kết) giá trị của input field với application với biến có tên là “name”
ng-bind directive : sẽ binds nội dung của thẻ với biến có tên là “name” ở trên.
Do đã được binds với nhau nên khi người dùng nhập vào input field, ngay lập tức nội dung thẻ
được thay đổi theo.
AngularJS Directives
Như bạn đã thấy, AngularJS directives là HTML attributes(thuộc tính HTML) với ng prefix.
ng-init directive dùng để khai báo biến AngularJS .
Ví dụ:
1
2
3
4
|
< div ng-app = "" ng-init = "firstName='John'" > The name is < span ng-bind = "firstName" ></ span > </ div > |
Hoặc là
1
2
3
4
|
< div data-ng-app = "" data-ng-init = "firstName='John'" > The name is < span data-ng-bind = "firstName" ></ span > </ div > |
Bạn có thể sử dụng data-ng- thay cho ng-, cả hai cách đều đúng.
Bạn sẽ được học nhiều hơn về directives ở các bài tiếp theo kẻo tẩu hỏa nhập ma nhé.
AngularJS Expressions
- AngularJS expressions được viết bên trong 2 dấu ngoặc kép : {{ expression }}.
- AngularJS sẽ đưa ra “output” tại nơi expressions được viết.Ví dụ:
1
2
3
4
5
6
7
8
9
|
<! DOCTYPE html> < html > < body > < div ng-app = "" > My first expression: {{ 5 + 5 }}</ div > </ body > </ html > |
AngularJS expressions có thể bind AngularJS data lên HTMLthay cho ng-bind directive.
Ví dụ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<! DOCTYPE html> < html > < body > < div ng-app = "" > Name: < input type = "text" ng-model = "name" > {{name}} </ div > </ body > </ html > |
Bạn sẽ học chi tiết hơn về expressions ở các bài sau nhé.
AngularJS Applications
- AngularJS modules định nghĩa các angularJS applications.
- AngularJS controllers để điều khiển AngularJS applications.
ng-app directive dùng để định nghĩa angularJS applications, ng-controller dùng để định nghĩa controllers.
Ví dụ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
< div ng-app="<strong>myApp</ strong >" ng-controller="< strong >myCtrl</ strong >"> First Name: < input type = "text" ng-model = "firstName" > Last Name: < input type = "text" ng-model = "lastName" > Full Name: {{firstName + " " + lastName}} </ div > < script > <!--AngularJS modules định nghĩa applications --> var app = angular.module('myApp', []); <!--ĐỊnh nghĩa controller --> app.controller('myCtrl', function($scope) { $scope.firstName= "John"; $scope.lastName= "Doe"; }); </ script > |
AngularJS controller là gì
AngularJS controller kiếm soát dữ liệu trong ứng dụng AngularJS
AngularJS controller tương tự với một đối tượng (object) trong Javascript
AngularJS application và AngularJS controller
Ứng dụng AngularJS (AngularJS application) được quản lý bởi AngularJS controller. AngularJS controller kiểm soát luồng chạy của một ứng dụng AngularJS.
Để định nghĩa controller trong ứng dụng AngularJS chúng ta sử dụng chỉ thị ng-controller
.
Một controller trong AngularJS chính là 1 đối tượng JavaScript (JavaScript object) và cách khởi tạo một controller giống cách khởi tạo đối tượng.
<div ng-app="myApp" ng-controller="myCtrl">
<p>Họ: <input type="text" ng-model="firstName"><p>
<p>Tên: <input type="text" ng-model="lastName"><p>
<p>Họ và tên: {{firstName + " " + lastName}}</p>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.firstName = "Trần Văn";
$scope.lastName = "Tí";
});
</script>
Giải thích ví dụ trên:
Ứng dụng AngularJS được định nghĩ sử dụng chỉ thị ng-app="myApp"
đặt trong thẻ <div>
Tiếp theo chúng ta tạo một controller trong ứngd ụng AngularJS sử dụng chỉ thị ng-controller="myCtrl"
Hàm myCtrl
chính là 1 hàm JavaScript.
AngularJS sẽ gọi controller sử dụng đối tượng $scope
.
Trong AngularJS, $scope
là 1 đối tượng của application (application object). Đối tượng ứng dụng chứa các thông tin của ứng dụng như giá trị của biến, các hàm...
controller tạo ra 2 biến là firstName
và lastName
. Hai biến này còn được gọi là thuộc tính (property) của controller.
Chỉ thị ng-model
bind giá trị của trường input vào thuộc tính của controller (firstName và lastName)
Phương thức của controller
Ở trên chúng ta làm quen với thuộc tính của controller. Như đã nói controller trong AngularJS chín là 1 đối tượng và như vậy nó cũng sẽ có phương thức. Phương thức của controller (hay controller method) đơn giản là 1 hàm.
<div ng-app="myApp" ng-controller="personCtrl">
<p>Tên: <input type="text" ng-model="firstName"></p>
<p>Họ: <input type="text" ng-model="lastName"></p>
<p>Họ & Tên: {{fullName()}}</p>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('personCtrl', function($scope) {
$scope.firstName = "Trần Văn";
$scope.lastName = "Tí";
$scope.fullName = function() {
return $scope.firstName + " " + $scope.lastName;
};
});
</script>
Ví dụ khác về controller
<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
<li ng-repeat="x in names">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
<script>
angular.module('myApp', []).controller('namesCtrl', function($scope) {
$scope.names = [
{name:'Trần Văn Tí',country:'Vietnam'},
{name:'David Tèo',country:'USA'},
{name:'Jonathan Bánh Bèo',country:'Singapore'}
];
});
</script>
Lưu AngularJS controller trong 1 tệp riêng
Với các ứng dụng đơn giản thì bạn có thể để mã lệnh của các controller trong tệp HTML. Tuy nhiên với các ứng dụng phức tạp thì controller nên được tách riêng ra một tập tin (và cả model) để giúp mã lệnh dễ quản lý hơn.