AngularJS tut 4: AngularJS Directives
AngularJS cho phép bạn mở rộng HTML với các thuộc tính mới được gọi là Directives .
AngularJS có một tập hợp các chỉ thị tích hợp cung cấp chức năng cho các ứng dụng của bạn.
AngularJS cũng cho phép bạn xác định các chỉ thị của riêng mình.
Hướng dẫn AngularJS
Các chỉ thị AngularJS là các thuộc tính HTML mở rộng với tiền tố ng-
.
Các ng-app
chỉ thị khởi tạo một ứng dụng AngularJS.
Các ng-init
chỉ thị khởi dữ liệu ứng dụng.
Lệnh ng-model
liên kết giá trị của các điều khiển HTML (đầu vào, lựa chọn, vùng văn bản) với dữ liệu ứng dụng.
Đọc về tất cả các chỉ thị AngularJS trong tài liệu tham khảo chỉ thị AngularJS của chúng tôi .
Thí dụ
<div ng-app=”” ng-init=”firstName=’John'”>
<p>Name: <input type=”text” ng-model=”firstName”></p>
<p>You wrote: {{ firstName }}</p>
</div>Hãy tự mình thử »
Các ng-app
chỉ thị cũng nói AngularJS rằng <div> yếu tố là “chủ sở hữu” của ứng dụng AngularJS.
Ràng buộc dữ liệu
Các {{ firstName }}
biểu hiện, trong ví dụ trên, là một AngularJS dữ liệu ràng buộc biểu.
Liên kết dữ liệu trong AngularJS liên kết các biểu thức AngularJS với dữ liệu AngularJS.
{{ firstName }}
được ràng buộc với ng-model="firstName"
.
Trong ví dụ tiếp theo, hai trường văn bản được liên kết với nhau bằng hai lệnh ng-model:
Thí dụ
<div ng-app=”” ng-init=”quantity=1;price=5″>
Quantity: <input type=”number” ng-model=”quantity”>
Costs: <input type=”number” ng-model=”price”>
Total in dollar: {{ quantity * price }}
</div>Hãy tự mình thử »
Sử dụng ng-init
không phải là rất phổ biến. Bạn sẽ học cách khởi tạo dữ liệu trong chương về bộ điều khiển.
Các phần tử HTML lặp lại
Lệnh ng-repeat
lặp lại một phần tử HTML:
Thí dụ
<div ng-app="" ng-init="names=['Jani','Hege','Kai']">
<ul>
<li ng-repeat="x in names">
{{ x }}
</li>
</ul>
</div>
Lệnh ng-repeat
này thực sự sao chép các phần tử HTML một lần cho mỗi mục trong một bộ sưu tập.
Lệnh ng-repeat
được sử dụng trên một mảng đối tượng:
Thí dụ
<div ng-app="" ng-init="names=[
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}]"><ul>
<li ng-repeat="x in names">
{{ x.name + ', ' + x.country }}
</li>
</ul></div>
AngularJS hoàn hảo cho các ứng dụng CRUD (Create Read Update Delete) cơ sở dữ liệu.
Chỉ cần tưởng tượng nếu các đối tượng này là bản ghi từ cơ sở dữ liệu.
Chỉ thị ng-app
Các ng-app
chỉ thị xác định các phần tử gốc của một ứng dụng AngularJS.
Các ng-app
ý chỉ tự động khởi động (tự động khởi tạo) áp dụng khi một trang web được tải.
Chỉ thị ng-init
Các ng-init
chỉ thị xác định giá trị ban đầu cho một ứng dụng AngularJS.
Thông thường, bạn sẽ không sử dụng ng-init. Thay vào đó, bạn sẽ sử dụng bộ điều khiển hoặc mô-đun.
Bạn sẽ tìm hiểu thêm về bộ điều khiển và mô-đun sau.
Chỉ thị ng-model
Lệnh ng-model
liên kết giá trị của các điều khiển HTML (đầu vào, lựa chọn, vùng văn bản) với dữ liệu ứng dụng.
Các ng-model
chỉ thị cũng có thể:
- Cung cấp xác thực kiểu cho dữ liệu ứng dụng (số, email, bắt buộc).
- Cung cấp trạng thái cho dữ liệu ứng dụng (không hợp lệ, bẩn, chạm, lỗi).
- Cung cấp các lớp CSS cho các phần tử HTML.
- Liên kết các phần tử HTML với các biểu mẫu HTML.
Đọc thêm về ng-model
chỉ thị trong chương tiếp theo.
Tạo Chỉ thị Mới
Ngoài tất cả các chỉ thị AngularJS được tích hợp sẵn, bạn có thể tạo các chỉ thị của riêng mình.
Các chỉ thị mới được tạo bằng cách sử dụng .directive
hàm.
Để gọi chỉ thị mới, hãy tạo một phần tử HTML có cùng tên thẻ với chỉ thị mới.
Khi đặt tên cho một chỉ thị, bạn phải sử dụng một tên trường hợp lạc đà, w3TestDirective
nhưng khi gọi nó, bạn phải sử dụng -
tên riêng biệt, w3-test-directive
:
Thí dụ
<body ng-app="myApp">
<w3-test-directive></w3-test-directive>
<script>
var app = angular.module("myApp", []);
app.directive("w3TestDirective", function() {
return {
template : "<h1>Made by a directive!</h1>"
};
});
</script>
</body>
Bạn có thể gọi một chỉ thị bằng cách sử dụng:
- Tên phần tử
- Thuộc tính
- Lớp
- Bình luận
Tất cả các ví dụ dưới đây sẽ tạo ra cùng một kết quả:
Tên phần tử
<w3-test-directive></w3-test-directive>
Thuộc tính
<div w3-test-directive></div>
Lớp
<div class="w3-test-directive"></div>
Bình luận
<!-- directive: w3-test-directive -->
Những hạn chế
Bạn có thể hạn chế các chỉ thị của mình chỉ được gọi bằng một số phương thức.
Thí dụ
Bằng cách thêm một thuộc restrict
tính với giá trị "A"
, chỉ thị chỉ có thể được gọi bởi các thuộc tính:
var app = angular.module("myApp", []);
app.directive("w3TestDirective", function() {
return {
restrict : "A",
template : "<h1>Made by a directive!</h1>"
};
});
Các giá trị hạn chế pháp lý là:
E
cho tên phần tửA
cho Thuộc tínhC
cho Lớp họcM
cho Bình luận
Theo mặc định, giá trị là EA
, có nghĩa là cả tên phần tử và tên thuộc tính đều có thể gọi chỉ thị.