[整理]通过AngularJS directive对bootstrap日期控件的的简单包装

最近项目上了AngularJS,而原来使用的日期控件的使用方式也需要改变,于是开始了倒腾,看了官方的例子,可以使用AngularJS的directive做简单的处理,这样在html里直接使用申明的的形式即可使用了。

<!doctype html>
<html ng-app="datepickerApp">
        <head>
                <link type="text/css" rel="stylesheet" href="bootstrap/css/bootstrap.css" />
                <link type="text/css" rel="stylesheet" href="bootstrap-datepicker/css/datepicker3.css" />
                <script src="jquery/jquery-1.11.1.min.js"></script>
                <script src="angular.js"></script>
                <script src="bootstrap/js/bootstrap.js"></script>
                <script src="bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
        </head>
        <body>
          <input type="text" class="datepicker" >
          <hr>
                <div ng-controller="datepickerController">
                        <input type="text" bs-Datepicker ng-model="vm.selectedDate">
                        <button ng-click="vm.show($event)">Date SELECT</button>

                        <br>
                        vm.selectedDate: {{vm.selectedDate}}
                </div>
                
                <script type="text/javascript">
                        //bootstrap-datepicker
                        var datepicker1 = $('.datepicker').datepicker()
                                .on('changeDate',function (ev){
                                        var newDate = new Date(ev.date)                                 
                                        datepicker1.hide()

                                        alert(newDate)
                                })
                                .data('datepicker')


                        //angular
                        var app = angular.module('datepickerApp', [])
                        
                        //angular-directive
                        app.directive('bsDatepicker',function(){
                                return {
                                        restrict : 'EA',
                                        scope:{
            model:"=ngModel"
                },
                                        link : function(scope,element,attrs,ctrl){
                                                var datepicker1 = $(element).datepicker()
                                                        .on('changeDate',function (ev){
                                                                var newDate = new Date(ev.date)                                 
                                                                datepicker1.hide()

                                                                alert(newDate)
                                                        })
                                                        .data('datepicker')
                                        }
                                }
                        })

                        app.controller('datepickerController',function ($scope){
                                
                                var vm = $scope.vm = {
                                        selectedDate : new Date(),
                                        setDate : function(date){
                                                selectedDate = date
                                        },
                                        clearDate : function(){
                                                selectedDate =  null
                                        },
                                        show : function($event){
                                                
                                        },
                                        hide : function(){

                                        }
                                }
                                

         



                        })

                </script> 
        </body>
</html>