Bài 16: Directive input month và input week trong AngularJS

Hai đối tượng cuối cùng chúng ta tìm hiểu liên quan đến ngày tháng đó là input[type="month"]input[type=""week], cả hai loại này đều là HTML5 nên nó cũng chẳng khác gì những Directive Date, Datetime-local và Time ở các bài trước. Trước tiên chúng ta sẽ tìm hiểu input Month trước nhé.

1. Directive input[type="month"] trong AngularJS

Input[type="month"] là thành phần mở rộng của HTML5 nên nó chỉ chạy trên trình duyệt hiện đại có hỗ trợ HTML5, trường hợp trình duyệt không hỗ trợ thì mặc định nó sẽ chuyển thành type = text và giá trị của nó AngularJS sẽ tự động biến thành giá trị rỗng. Trường hợp này gia trị truyền vào phải đúng với định dạng đó là yyyy-MM.

Mặc định timezone sẽ lấy ở trình duyệt nên nếu bạn muốn tha đổi timezone thì phải dùng ngModelOptions để khai báo.

Danh sách các Directive thường dùng với month.

Directive Giá trị Chi tiết
ngModel String Tên liên kết với $scope
name String Tên của input
min String Thiết lập giờ nhỏ nhất, tuân theo định dạng  yyyy/MM
max String Thiết lập giờ lớn nhất, tuân theo định dạng  yyy/MM
required String Bắt buộc nhập cho input
ngRequired String Nếu giá trị bằng true thì Angular sẽ tự thêm thuộc tính Required
ngChange String Xay ra khi ta đổi giá trị của input

Ví dụ Directive input[type="month"]

Bây giờ ta làm một ví dụ tương tự như những bài trước đó là lấy ngày giờ hiện tại hiển thị lên input và khai báo khoảng thời gian cho phép là từ  tháng 1 năm 2014 đến tháng 12 năm 2014.

XEM DEMO

<!doctype html>
<html lang="vi">
    <head>
        <meta charset="UTF-8">
        <title>Ví dụ sử dụng Directive datetime-local</title>
        <style>
            form.invalid{color:red}
        </style>
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
        <script>
            angular.module('timeExample', [])
                    .controller('DateController', ['$scope', function($scope) {
                    $scope.value = new Date();
                }]);
        </script>
    </head>
    <body ng-app="timeExample">
        <form name="myForm" ng-controller="DateController as dateCtrl">
            Chọn tháng trong năm 2014 <br/>
            <input type="month" name="input" ng-model="value"
                   min="2014-01" max="2014-12" required />
            <br/>
            <tt>value = {{value | date: "yyyy-MM"}}</tt><br/>
            <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
            <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
            <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
            <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
        </form>
    </body>
</html>

Giao diện:

2. Directive input[type="week"] trong AngularJS

Tương tự như Month, week cũng là HTML5 nên cách xử lý cũng tương tự nên lý thuyết sẽ y chang như trên bạn nhé, , chỉ khác ở phần thông số cấu hình min và max là khác nhau.

Directive Giá trị Chi tiết
min String Thiết lập giờ nhỏ nhất, tuân theo định dạng  yyyy-W
max String Thiết lập giờ lớn nhất, tuân theo định dạng  yyyy-W

Ví dụ: XEM DEMO

<!doctype html>
<html lang="vi">
    <head>
        <meta charset="UTF-8">
        <title>Ví dụ sử dụng Directive datetime-local</title>
        <style>
            form.invalid{color:red}
        </style>
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
        <script>
            angular.module('timeExample', [])
                    .controller('DateController', ['$scope', function($scope) {
                    $scope.value = new Date();
                }]);
        </script>
    </head>
    <body ng-app="timeExample">
        <form name="myForm" ng-controller="DateController as dateCtrl">
            Chọn tháng trong năm 2014 <br/>
            <input type="week" name="input" ng-model="value"
                   min="2014-W32" max="2014-W52" required />
            <br/>
            <tt>value = {{value | date: "Www-yyyy"}}</tt><br/>
            <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
            <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
            <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
            <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
        </form>
    </body>
</html>
Giao diện:

directive-input-month-va-input-week-trong-angularjs-1

3. Lời kết

Hết bài này đúng là vui thật, vì các bài liên quan đến ngày tháng này làm lui làm tới thấy chán quá. Để các bạn không chán thì bài tiếp theo chúng ta sẽ tìm hiểu hai Directive khá hấp dẫn đó là ngShow và ngHide. Mời các bạn đón xem cheeky

Hãy để lại link bài viết gốc khi chia sẻ bài viết này, mình sẽ report DMCA với những website lấy nội dung mà không để nguồn hoặc copy bài với số lượng lớn.

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Facebook để được hỗ trợ nhanh nhất.