`

angularjs使用lhgdialog做对话框控件

阅读更多

关于这条“军规”,我们就不要浪费口舌了,angular-strap等很多库扩展的做法,都没有一下子舍弃jquery的生态圈

Don't even use jQuery. Don't even include it 

 

我这篇blog主要是以一个示例呼应下另外一些朋友的blog——angularjs与其他类库的协作

 

lhgdialog是一个很优秀的对话框的js库,提供jquery插件形式,我们项目上用起来很方便。如果用angular纯模型控制的方式去做dialog,需要大量的css控制属性,其中drop/resize等比起现有的jquery都算从头重写,当然费时费力,所以我们还是采取结合jquery实现。

 

因为open一个dialog,底层是clone一段dom到body下,用定位去实现的,对于这种动态创建的dom,angular本身在第一次bootstrap编译时候是没有双向绑定特性的,这要借助强大的$compile这个服务

 

为了在应用层(controller/model)的代码少点jquery的侵入,所以做成了指令(用指令还会引发一些其他问题,在此不表)——

 

 

md.directive('uiDialog2', ['$parse', '$compile', 'ng.config', 'uiLog', 'safeApply', function($parse, $compile, conf, log, safeApply){
'use strict';
return {
	restrict: 'A',
	link: function(scope, el, attrs){
		var opts = scope.$eval(attrs.uiDialog2) || {};
		log.i('Compile dialog2 ui : ');
		log.i(opts);

		if(!opts.showModel || !opts.dialogId){
			log.w('No show model and dialog id given!');
			return;
		}

		// lhgdialog properties
		var props = {};
		if(ag.isObject(conf.dialog2)){
			ag.extend(props, conf.dialog2);
		}
		props.id = opts.dialogId;
		props.content = el.html();
		props.init = function(){
			// in watch
			$compile($('.ui_content:first'))(scope);
		};
		props.close = function(){
			// use close in dialog toolbar will execute twice
			// use button in dialog user defined will execute once which trigger by watch list
			var getter = $parse(opts.showModel);
			var isShow = getter(scope);
			if(isShow){
				var setter = getter.assign;
				// trigger watch again
				safeApply(scope, function(){
					setter(scope, false);
				});
			}
		};

		// over write
		if(angular.isDefined(opts.lock))
			props.lock = opts.lock;
		if(angular.isDefined(opts.drag))
			props.drag = opts.drag;
		if(angular.isDefined(opts.fixed))
			props.fixed = opts.fixed;
		if(angular.isDefined(opts.resize))
			props.resize = opts.resize;
		if(opts.width)
			props.width = opts.width;
		if(opts.height)
			props.height = opts.height;
		if(opts.left)
			props.left = opts.left;
		if(opts.top)
			props.top = opts.top;

		scope.$watch(opts.showModel, function(val){
			// show
			if(val){
				$.dialog(props);
			}else{
				// hide
				var target = $.dialog.list[opts.dialogId];
				if(target)
					target.close();
			}
		});
	}
};
}]);

 

 

 

html/js里用法就很简单

 

 

	var myModule = angular.module('myModule', ['ng.ui']);
	myModule.controller('MyCtrl', function($scope){
		$scope.detail = {name: 'kerry'};
		$scope.isDialogShow = false;

		$scope.open = function(){
			$scope.detail = {name: ''};
			$scope.isDialogShow = true;
		};
		$scope.close = function(){
			$scope.isDialogShow = false;
		};
	});

	window.angular.bootstrap(document, ['myModule']);

 

 

html代码如下

 

<body ng-controller="MyCtrl">
<div class="container_12">
	<button class="btn btn-blue" ng-click="open()">Open</button>
	<br />
	{{isDialogShow}}
</div><!-- /.container_12 -->

<div ui-dialog2="{showModel: 'isDialogShow', dialogId: 'dialogA', lock: true}" title="DIALOG" 
	style="display: none;">
	<form name="detailForm">
	<input ng-model="detail.name" ui-valid="r int" />
	</form>
	<br />
	{{detailForm.$valid}}
	<br />
	<button class="btn btn-red" ng-click="close()">Close</button>
</div>

</body>

 

当然,前提是你html里要引入jquery/lhgdialog的js

0
2
分享到:
评论

相关推荐

    lhgdialog Js对话框插件3.5.1,不含示例

    摘要:脚本资源,Ajax/JavaScript,lhgdialog,对话框插件 lhgdialog Js对话框插件3.5.1,不含示例,3.5.1 一款功能强大的迷你且高效的弹出窗口组件,基于网络访问并且兼容IE 6.0+,Firefox 3.0+,Opera 9.6+,Chrome 1.0+,...

    Lhgdialog对话框使用总结(上)

    《Lhgdialog对话框使用总结(上)》 在网页开发中,对话框是一个不可或缺的交互元素,它用于向用户展示重要信息或者进行确认操作。Lhgdialog是一款基于JavaScript的弹出对话框插件,其设计简洁,功能强大,且高度可...

    lhgdialog弹出窗口控件使用说明

    lhgdialog是一款由李辉刚开发的弹出窗口控件,用于在网页中创建具有定制化功能的对话框。该控件提供了丰富的配置选项和多种内容展现方式,适合于多种场景下的网页交互设计。 首先,了解lhgdialog的文件结构至关重要...

    lhgdialog超强弹窗控件,支持缩放、拖动,丰富接口调用

    lhgdialog超强弹窗控件,支持遮罩,缩放、拖动,随滚动条滚动,丰富接口调用 可以外调页面,也可以显示html内容 我自己扩展如下: http://www.px915.com/lhgdialog/_demo.html 1、改变了弹窗的样式(自认为喜欢...

    lhgdialog对话框组件

    **lhgDialog对话框组件详解** lhgDialog是一款在JavaScript世界中广泛应用的对话框组件,以其高度可定制性、良好的跨浏览器兼容性和丰富的功能而受到开发者们的青睐。它旨在为网页应用提供美观、高效的对话框解决...

    lhgdialog 弹出窗口控件

    《lhgdialog弹出窗口控件详解》 lhgdialog是一款优秀的JavaScript弹出窗口插件,它以其简洁的代码、丰富的功能以及高度可定制的皮肤,深受开发者喜爱。这款插件能够帮助网页开发者轻松实现各种复杂的对话框效果,如...

    ASP.net环境的lhgdialog弹出窗口控件

    Lhgdialog是一个在ASP.NET环境下广泛使用的JavaScript插件,它允许开发者在网页上实现弹出对话框的功能,用于显示信息、警告、确认或者进行更复杂的操作。 Lhgdialog控件的主要特点和优势包括: 1. **易用性**:...

    lhgdialog弹出窗口框架使用说明

    **lhgdialog弹出窗口框架使用说明** lhgdialog是一个专为前端开发者设计的轻量级、高效能的弹出窗口组件。它以其强大的功能和灵活性,在网页应用中被广泛使用,尤其适用于需要创建各种复杂对话框场景。本文将详细...

    一个基于纯js实现的漂亮对话框组件lhgdialog-1.2.1源码及例子

    《深入解析LHGDialog:一个纯JavaScript实现的优雅对话框组件》 在Web开发中,对话框组件是不可或缺的一部分,它用于向用户展示警告、询问、确认等交互信息。LHGDialog是一个基于纯JavaScript实现的对话框组件,以...

    lhgdialog文件加跨iframe框架使用

    从提供的压缩包文件名来看,"lhgdialog_jb51.net.rar"可能包含了lhgDialog的基础文件,而"lhgdialog跨框架iframe弹出层.rar"则可能包含了关于跨iframe使用对话框的示例代码或扩展功能。在实际操作中,你需要解压这些...

    对话框,日历控件,拖动层

    使用LHGDialog,开发者可以轻松创建具有弹出、漂浮、模态或非模态特性的对话框,以满足不同场景的需求。 其次,日历控件在许多需要日期选择的场景下非常实用,例如预订系统、日程管理等。本资料中提到了两类日历...

    lhgdialog弹出窗口例子

    本文将深入探讨lhgdialog的使用方法,包括如何在框架中集成、关闭后回刷父窗口的功能以及各种应用场景和皮肤选择。 首先,我们来看如何在项目中引入并使用lhgdialog。通常,你需要通过CDN或者本地引入js文件,例如`...

    lhgdialog 说明文档

    下面是一些使用lhgdialog创建不同对话框的简单示例: ```python # 显示消息框 lhgdialog.msgbox(message="这是一个消息框", title="lhgdialog 示例") # 获取用户输入 user_input = lhgdialog.inputbox(prompt="请...

    lhgDialog示例

    总的来说,【lhgDialog示例】为初学者提供了一个直观的学习平台,通过这个例子,你可以了解到如何使用lhgDialog来创建各种对话框,并掌握其基本的配置和回调机制。在实际项目中,可以根据需要进一步探索和利用...

    js实现模态窗口实例(lhgdialog)

    `lhgdialog`是一个优秀的JavaScript库,专门用于创建模态对话框,它提供了丰富的自定义选项和美观的视觉效果,相比C#自带的对话框,`lhgdialog`在用户体验和设计感上更为出色。 `lhgdialog`的核心功能包括: 1. **...

    lhgdialog v4.2

    《lhgdialog v4.2:一款强大的对话框组件详解》 lhgdialog是一款广泛应用于JavaScript和HTML5开发中的对话框组件,其最新版本v4.2为开发者提供了丰富的功能和便捷的API接口,旨在提升网页应用的用户体验。在这款...

    lhgDialog-4.2.0.zip

    而lhgDialog是一款基于jQuery的弹出对话框插件,它为网页提供了丰富的对话框效果,使得用户交互更加友好。本文将深入探讨lhgDialog-4.2.0版本的特性和应用。 lhgDialog的核心功能在于提供灵活的对话框解决方案,它...

    lhgdialog3.2.4工具自带API

    这款工具的最新版本在前代的基础上进行了优化和升级,为开发者提供了更高效、更稳定、更美观的对话框解决方案,尤其对于那些使用各种框架进行开发的工程师们来说,lhgdialog3.2.4无疑是一把得力的助手。 lhgdialog...

    lhgdialog4.0

    9. **定制化**:为了满足不同应用的需求,lhgdialog4.0.0可能允许高度自定义对话框的外观和行为,例如调整对话框大小、设置背景颜色、添加自定义控件等。 10. **性能优化**:作为4.0.0版本,它可能在性能方面进行了...

    基于JavaScript实现的lhgdialog DIV弹出窗口框架

    4. **lhgdialog API**:lhgdialog提供了丰富的API供开发者调用,包括初始化对话框、设置参数、显示、关闭、回调函数等。例如,`lhgdialog(options)`用于创建一个对话框,`options`对象可以包含标题、内容、宽度、...

Global site tag (gtag.js) - Google Analytics