Professional Documents
Culture Documents
1
NỘI DUNG
❑Two-way binding
❑Directive
2
MODULE
Module là gì.
❑ Một Module là một container chứa các thành phần khác nhau
của ứng dụng như filters, controllers, services, directives…
❑ Bạn tưởng tượng một module như một hàm main của các loại
ứng dụng khác.
❑ Module được tạo ra bằng cách dùng hàm angular.module.
<script>
var app = angular.module("myApp", []);
</script>
3
MODULE
▪ myApp: Là tên của app, nó phải giống với giá trị của
thuộc tính ng-app bên HTML
4
CONTROLLER
Controller là gì.
❑Trong Angular thì controller là một hàm
javascript. Tác dụng của nó xây dựng lên model
để cho view hiển thị.
❑Cách tạo ra một controller.
<script>
app.controller(“myCtrl”,myController);
</script>
5
MODULE & CONTROLLER
❑ Ví dụ đầu tiên module cách 1.
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<script src="./js/angular.min.js"></script>
<title>Module AngularJS</title>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<p>{{wellcom}}</p>
<script>
var app = angular.module("myApp",[]);
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<script src="./js/angular.min.js"></script>
<title>Module AngularJS</title>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<p>{{wellcom}}</p>
<script>
var app = angular.module("myApp",[]);
app.controller("myCtrl",function($scope){
$scope.wellcom="Wellcom AngularJS";
});
</script>
</body>
</html>
7
MODULE & CONTROLLER
❑ Các thành phần trong ví dụ trên.
❖ <script src="./js/angular.min.js"></script>
▪ Biểu thức AngularJS hiển thị giá trị thuộc tính msg trong đối tượng $scope
❖ app.controller("myctrl", myfunc);
9
MODULE & CONTROLLER
❑ Buộc dữ liệu đối tượng.(object)
❖ $scope.info là một đối tượng gồm 2 thuộc tính
▪ itc có giá trị là “Infomation Technology College”
▪ course có giá trị là “Welcome to AngularJS”
❖ {{info.itc}} là biểu thức Angular nhằm hiển thị giá trị thuộc tính itc của đối
tượng $scope.info
10
MODULE & CONTROLLER
❑ Buộc dữ liệu đối tượng.(object)
11
MODULE & CONTROLLER
❑ Buộc dữ liệu mảng.(array)
❑ $scope.info là một mảng gồm 2 phần tử
❑ {{info[0]}} biểu thức Angular nhằm hiển thị giá trị của phần tử đầu tiên của
mảng $scope.info
❑ {{info[1]}} biểu thức Angular nhằm hiển thị giá trị của phần tử thứ 2 của
mảng $scope.info
12
TWO-WAY BINDING
❑ Ngoài biểu thức, AngularJS còn cho phép sử dụng các chỉ thị để buộc dữ
liệu lên view.
❖ @ng-bind: buộc dữ liệu vào nội dung thẻ bất kỳ
❖ @ng-model: buộc dữ liệu vào các điều khiển form. Chỉ thị này được sử
dụng để buộc dữ liệu 2 chiều, nghĩa là khi dữ liệu trên điều khiển thay
đổi thì giá trị của thuộc tính trong $scope cũng bị thay đổi theo.
13
SCOPE
❑ Khái niệm Scope.
$scope là một đối tượng có nhiệm vụ giao tiếp dữ liệu giữa controller và
view. $scope chứa thông tin dữ liệu model, bao gồm các phương thức và
thuộc tính. Trong controller, dữ liệu model có thể truy cập qua đối tượng
$cope.
❑ Bản chất: chúng ta hiểu rằng ứng dụng AngularJS bao gồm.
3. Controller – là các hàm javascript có khả năng tạo, thay đổi, xóa, điều
khiển dữ liệu.
14
SCOPE
❑ Mô hình MVC.
$scope ngoài duy trì dữ liệu (thuộc tính) nó còn cho phép bổ sung các
hàm (phương thức) thực hiện xử lý theo mục đích riêng
15
SCOPE
❑ Phạm vi của Scope.
• Khi một controller được gán vào một tag HTML (bằng chỉ thị ng-
liệu và các phương thức dành riêng cho controller làm việc với
16
SCOPE
❑ Mô hình nhiều controller.
17
SCOPE
❑ Ví dụ phạm vi của biến scope
<body ng-app="myApp">
<div ng-controller="nhanvienCtrl_KD">
<p >{{name}}</p>
</div>
<div ng-controller="nhanvienCtrl_IT">
<p >{{name}}</p>
</div>
<script>
var app=angular.module("myApp",[]);
app.controller("nhanvienCtrl_KD",function($scope){
$scope.name="Nhân viên kinh doanh.";
});
app.controller("nhanvienCtrl_IT",function($scope){
$scope.name="Nhân viên IT.";
});
</script>
</body>
18
ROOTSCOPE
❑ biến $rootScope
❑ Biến rootscope là một biến tổng quát bao hàm toàn bộ các controller của
ứng dụng.
❑ Tất cả các ứng dụng đều có một $rootScope, nó được tạo khi khai báo một
phần tử HTML có thuộc tính ng-app.
19
ROOTSCOPE
❑ $scope và $rootScope
Cập nhật dữ liệu trong $rootscope cha sẽ tự động broadcast đến các scope con
20
ROOTSCOPE
app.controller("nhanvienCtrl_IT",function($scope,$rootScope){
//$rootScope.name="Nhân viên IT.";
});
</script>
</body>
21
SCOPE
❑ Scope lồng nhau.
❖ Trong AngularJS hổ trợ các controller lồng nhau nên cũng có scope lồng
nhau .
❖ Biến được khai báo ở scope của controller bên ngoài cũng sẽ được gán cho
biến cùng tên ở scope của controller bên trong.
❖ Tuy nhiên giá trị của biến ở controller bên trong hoàn toàn có thể ghi đè của
controller bên ngoài.
22
SCOPE
❑ Mô hình Scope lồng nhau.
Trong $scope con có thể truy xuất trực tiếp thành viên của $scope cha hoặc thông qua $parent
23
SCOPE
❑ Ví dụ phạm vi của biến Scope lồng nhau.
<body ng-app="myApp">
<div ng-controller="nhanvienCtrl_KD">
<p >{{name}} <br> {{type}}</p>
<div ng-controller="nhanvienCtrl_IT">
<p >{{name}} <br> {{type}}</p>
</div>
<div ng-controller="nhanvienCtrl_BH">
<p >{{name}} <br> {{type}}</p>
</div>
</div>
<script>
var app=angular.module("myApp",[]);
app.controller("nhanvienCtrl_KD",function($scope){
$scope.name="Nhân viên kinh doanh.";
$scope.type="Nhân viên";
});
app.controller("nhanvienCtrl_IT",function($scope){
$scope.name="Nhân viên IT";
})
app.controller("nhanvienCtrl_BH",function($scope){
$scope.name="Nhân viên bào hành";
})
</script> 24
</body>
DIRECTIVE
❑ Khái niệm Directive.
▪ AngularJS cho phép mở rộng HTML bằng thuộc tính mới gọi là chỉ thị
(directive). AngularJS chứa 1 tập các chỉ thị được tích hợp sẵn cho phép
thực hiện các chức năng với các ứng dụng. AngularJS cũng cho phép
bạn tự định nghĩa các chỉ thị của riêng mình.
▪ Chỉ thị AngularJS được mở rộng bằng các thuộc tính HTML với tiền tố ng-
.
▪ Chỉ thị ng-model trói giá trị của các điều khiển HTML (input, select,
textarea) với dữ liệu ứng dụng.
▪ Chỉ thị @ng-bind =>Buộc dữ liệu vào 1 tag HTML thay cho biểu thức {{25}}
DIRECTIVE
❑ Sơ đồ Các directive built-in phổ biến.
26
DIRECTIVE
❑ Ví dụ ng-init.
27
DIRECTIVE
❑ Các chỉ thị điều khiển giao diện.
• @ng-show = “expression” => Hiển thị khi biểu thức có giá trị true
• @ng-if = “expression” => Thực hiện khi biểu thức có giá trị là false
28
DIRECTIVE
❑ Ví dụ ng-show.
<body ng-app="">
Show HTML: <input type="checkbox" ng-model="myVar">
<div ng-show="myVar">
<h1>Welcome</h1>
<p>Welcome to my home.</p>
</div>
</body>
❑ Ví dụ ng-hide.
<body ng-app="">
Show HTML: <input type="checkbox" ng-model="myVar">
<div ng-hide="myVar">
<h1>Welcome</h1>
<p>Welcome to my home.</p>
</div>
</body>
29
DIRECTIVE
❑ Ví dụ ng-if.
31
DIRECTIVE
❑ Chỉ thị ng-repeat.
Ví dụ:
32
DIRECTIVE
❑ Dùng ng-repeat xuất dữ liệu ra bảng .
33
DIRECTIVE
❑ Tạo trang sản phẩm.
34
DIRECTIVE
❑ Tự tạo chỉ thị.
▪ Chúng ta có thể tạo chỉ thị với tên mới trong AngularJS. Các chỉ thị mới
được tạo bằng cách dùng hàm .directive. Để chạy 1 chỉ thị mới, 1 phần
tử HTML phải có cùng tên với chỉ thị mới này. Khi đặt tên cho chỉ thị mới,
chúng ta nên dùng tên viết liền nhau, mỗi từ viết hoa trừ từ đầu tiên, và
khi thực thi, tách rời các từ bằng dấu gạch ngang – và viết thường
▪ Chúng ta có thể dùng chỉ thị mới thông qua tên phần tử, thuộc tính, lớp
và chú thích.
▪ Một số giá trị giới hạn hợp lệ là:
o E là tên phần tử
o A là thuộc tính
o C là lớp
o M là chú thích (comment)
▪ Mặc định giá trị là EA, nghĩa là tên phần tử và thuộc tính có thể gọi chỉ
thị.
35
DIRECTIVE
❑ Ví dụ chỉ thị theo phần tử.
<body ng-app="myApp">
<div><h1>Directive Element</h1> </div>
<Hello-world></Hello-world>
<script>
var app = angular.module("myApp",[]);
app.directive("helloWorld",function(){
return{
restrict:"E",
template: "<h1>Hello World Angular JS Element.</h1>"
}
});
</script>
</body>
36
DIRECTIVE
❑ Ví dụ chỉ thị theo thuộc tính.
<body ng-app="myApp">
<div><h1>Directive Attribute</h1> </div>
<div hello-world></div>
<script>
var app = angular.module("myApp",[]);
app.directive("helloWorld",function(){
return{
restrict: "A",
template: "<h1>Hello world Angular JS Attribute</h1>"
}
});
</script>
</body>
37
DIRECTIVE
❑ Ví dụ chỉ thị theo class.
<body ng-app="myApp">
<div><h1>Directive Class</h1> </div>
<div class="hello-world"></div>
<script>
var app = angular.module("myApp",[]);
app.directive("helloWorld",function(){
return{
restrict:"C",
template:"<h1> Hello world Angular JS directive class.</h1>"
}
});
</script>
</body>
38
DIRECTIVE
❑ Ví dụ chỉ thị theo ghi chú (comment).
<body ng-app="myApp">
<div><h1>Directive comment</h1></div>
<!-- directive: comment -->
<script>
var app = angular.module("myApp",[]);
app.directive("comment",function(){
return{
restrict:"M",
replace: true,
template:"<h1> OK comment</h1>"
};
});
</script>
</body>
39
40