Node.js使用对话框ngDialog的示例代码(2)

<!doctype html> <html> <head> <title>A Server Template for ngDialog</title> </head> <body> <div> <h3>Server Template for ngDialog</h3> <li>Node.js</li> <li>Express</li> <li>AngularJS</li> <li>MongoDB</li> </div> </body> </html>

引入ngDialog

要使用ngDialog,需要在HTML中使用script引入对应的js库文件。另外还要在head部分引入几个css文件。参考ngdialog.html即可。

ngDialog的库文件可以到https://github.com/likeastore/ngDialog下载,或者到这里下载:。我是在后面这个链接下的0.4.0版本,把文件重命名了一下。重命名后的几个文件如下:

ngDialog-0.4.0.min.js

ngDialog-0.4.0.min.css

ngDialog-theme-default-0.4.0.min.css

ngDialog-theme-plain-0.4.0.min.css

API摘要学习

我学习时遇到了一些疑惑,记录在下面。

对话框内容模板

要显示一个对话框,必须得指定待现实的内容。这是通过template属性指定的。template有三种情况:

嵌入在js或html代码里的纯文字模板,此时需要同时在options里设置plain属性为true,即“plain:true”,然后直接将一段html代码赋值给template,比如template:<p>Text in ngDialog</p>

在HTML内定义template模板,同时给模板指定id,将id赋值给template选项,比如“template: ‘templateId'”。而模板可能是这样的:<script type="text/ng-template"><div><p>text in dialog</p></div></script>

以外部的html片段(文件)为模板,比如“template: ‘serverTpl.html'”,serverTpl.html文件在服务器上。

指定主题

可以在options里通过className指定主题,目前有ngdialog-theme-default和ngdialog-theme-plain两个主题。这两个注意对应两个css文件,前面我们已经通过HTML引入了。

响应关闭等事件

对话框被关闭时,会发出一些事件,开发者可以监听这些事件来获得通知。具体事件有:

ngDialog.opened

ngDialog.closing

ngDialog.closed

这些事件定义在$rootScope服务里,所以我们的controller构造函数必须依赖$rootScope。比如我们现在的模块定义和controller定义:

angular.module(‘myApp', [‘ngDialog']). controller(‘myController', function(scope,scope,rootScope, ngDialog){

在模块定义里注明依赖ngDialog模块,在controller定义里注入了$rootScope和ngDialog。

如何监听事件,看ngdialog.js代码吧。

另外我们还可以在options中设置preCloseCallback,指定一个函数,这个函数在对话框取消关闭之前会调用到。https://github.com/likeastore/ngDialog这里有说明。注意,是取消对话框时会调用到,如果确认,不会调到哦。所以,这个preCloseCallback通常在阻止或提醒用户放弃输入时使用,比如用户注册,输入了一些信息,想退,你可以问他是否要真的想放弃。

指定对话框的controller

可以通过options设置controller属性来给一个对话框指定控制器。这个控制器可以是内联(inline)的:

$scope.openInlineController = function () { $rootScope.theme = 'ngdialog-theme-plain'; ngDialog.open({ template: 'withInlineController', controller: ['$scope', '$timeout', function ($scope, $timeout) { var counter = 0; var timeout; function count() { $scope.exampleExternalData = 'Counter ' + (counter++); timeout = $timeout(count, 450); } count(); $scope.$on('$destroy', function () { $timeout.cancel(timeout); }); }], className: 'ngdialog-theme-plain' }); };

也可以是在js中定义的。比如我们在js里定义了一个名为“InsideCtrl”的controller,就可以在调用ngDialog.open(options)时在options里设置controller属性:

$scope.openInsideController = function(){ ngDialog.open({ template: "serverTpl.html", className: "ngdialog-theme-plain", controller: "InsideCtrl" }); };

具体示例可以参考:https://github.com/likeastore/ngDialog/blob/master/example/index.html

确认对话框

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3827f3d73d51872a92a078cacd1ab996.html