AngularJS封装jQuery DateTimepicker

news/2024/7/11 0:08:39 标签: JavaScript, AngularJS, jQuery, DateTimepicker

DateTimePickerDirective.js

angular.module('myApp.directives',[])
	.directive('datetimepicker', function() {
		return {
			//强制AngularJS把指令限定为只支持属性
			restrict: 'A',
			//总是和ng-model配合使用
			require:'?ngModel',
			scope: {
				//此方法需要与预先定义好,然后传递给视图控制器中的指令
				select: '&'	//把我们所引用的select函数绑定到右边的作用域中
			},
			link: function(scope, element, attrs, ngModel) {
				if(!ngModel) return;
				
				var optionsObj = {};
				
				optionsObj.timeFormat = 'HH:mm:ss';
				
				var updateModel = function(dateTimeTxt) {
					scope.$apply(function() {
						//调用AngularJS内部的工具更新双向绑定关系
						ngModel.$setViewValue(dateTimeTxt);
					});
				};
				
				optionsObj.onSelect = function(dateTimeTxt, picker) {
					updateModel(dateTimeTxt);
					if(scope.select) {
						scope.$apply(function() {
							scope.select({date: dateTimeTxt});
						});
					}
				};
				
				ngModel.$render = function() {
					//使用AngularJS内部的'binding-specific'变量
					element.datepicker('setDate', ngModel.$viewValue || '');
				};
				element.datetimepicker(optionsObj);
			}
		};
	});

DateTimePickerController.js

var app = angular.module('myApp', ['myApp.directives']);

app.controller('MainCtrl', function($scope) {
	$scope.myText = 'Not Selected';
	$scope.currentDateTime = '';
	$scope.updateMyText = function(dateTime) {
		$scope.myText = 'Selected';
	};
});

DateTimePickerHtml.html

<!DOCTYPE html>
<html ng-app="myApp">
	<head lang="en">
		<meta charset="utf-8"></meta>
		<title>AngularJS DateTimepicker</title>
		<script src="jquery/jquery-1.8.3.js"></script>
		<script src="jquery-ui/js/jquery-ui-1.9.2.js"></script>
		<script src="angular/angular.js"></script>
		<link rel="stylesheet" href="jquery-ui/css/custom-theme/jquery-ui-1.9.2.css"></link>
		<link href="jQuery-Timepicker-Addon/jquery-ui-timepicker-addon.css" type="text/css" />
		<link href="jQuery-Timepicker-Addon/demos.css" rel="stylesheet" type="text/css" />
		<script src="jQuery-Timepicker-Addon/jquery-ui-timepicker-addon.js" type="text/javascript"></script>
		<script src="directive/DateTimePickerDirective.js"></script>
		<script src="controller/DateTimePickerController.js"></script>
		<!--中文-->
		<script src="jquery-ui/js/jquery.ui.datepicker-zh-CN.js" type="text/javascript" charset="gb2312"></script>
		<script src="jquery-ui/js/jquery-ui-timepicker-zh-CN.js" type="text/javascript"></script>
	</head>
	<body ng-controller="MainCtrl">
		<input id="dateField" datetimepicker ng-model="$parent.currentDateTime" select="updateMyText(dateTime)"></input>
		<br></br>
		{{myText}} - {{currentDateTime}}
	</body>
</html>

运行效果:



http://www.niftyadmin.cn/n/1318448.html

相关文章

J2EE 13种技术规范

J2EE平台由一整套服务&#xff08;Services&#xff09;、应用程序接口&#xff08;APIs&#xff09;和协议构成&#xff0c;它对开发基于Web的多层应用提供了功能支持&#xff0c;下面对J2EE中的13种技术规范进行简单的描述(限于篇幅&#xff0c;这里只能进行简单的描述): 1.J…

AngularJS Team List应用:过滤器和控制器的交互

在这个例子中&#xff0c;我们将会通过实例展示如下两个主要的方面&#xff1a; 1.如何以一种优雅、简洁的方式把过滤器和迭代器联合起来使用&#xff1f; 2.如何使没有继承关系的控制器进行交互 应用本身很简单&#xff0c;其中的数据是关于各种体育运动的团队列表&#xff0c…

数据链路层简介

1.数据链路层的基本概念 数据链路层在物理层提供服务的基础上向网络层提供服务&#xff0c;其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能&#xff0c;将物理层提供的可能出错的物理连接改造成为逻辑…

AngularJS封装jQuery-File-Upload

在实际开发中&#xff0c;我们经常需要文件上传功能。一个很棒的例子是BlueImpd的File Upload控件&#xff08;https://github.com/blueimp/jQuery-File-Upload&#xff09;&#xff0c;它使用了jQuery和jQuery UI&#xff08;或者Bootstrap&#xff09;。它们的API都非常简单&…

AngularJS实现分页功能

对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下&#xff0c;我们的数据会比较多&#xff0c;无法很好地显示在单个页面中。在这种情况下&#xff0c;我们需要把数据以页的方式来展示&#xff0c;同时带有转到上一页和下一页的功能。既然在整个应用中这是一种…

APT攻击介绍

APT攻击介绍 APT攻击&#xff0c;即高级可持续威胁攻击,也称为定向威胁攻击&#xff0c;指某组织对特定对象展开的持续有效的攻击活动。这种攻击活动具有极强的隐蔽性和针对性&#xff0c;通常会运用受感染的各种介质、供应链和社会工程学等多种手段实施先进的、持久的且有效的…

AngularJS与服务端协作及登录

$http服务是AngularJS中的核心服务之一&#xff0c;我们可以扩展它&#xff0c;从而实现web应用中的各种常用需求&#xff0c;包括&#xff1a; 1.带有一个通用的错误处理点 2.处理授权和登录重定向 3.与那些无法理解或者返回JSON的服务端交互 4.通过JSONP与外部服务&#xff0…

PPTP、L2F、L2TP协议

PPTP协议简介 PPTP&#xff08;Point to Point Tunneling Protocol&#xff09;&#xff0c;即点对点隧道协议。该协议是在PPP协议的基础上开发的一种新的增强型安全协议&#xff0c;支持多协议虚拟专用网&#xff08;VPN&#xff09;&#xff0c;可以通过密码验证协议&#x…