[整理]通过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>
原文地址:https://www.cnblogs.com/Benoly/p/4109460.html