这次给大家带来怎样操作Nodejs使用对话框ngDialog,操作Nodejs使用对话框ngDialog的注意事项有哪些,下面就是实战案例,一起来看一下。
做网站经常会遇到弹出对话框获取用户输入或弹出对话框让用户确认某个操作之类的情景,有一个基于AngularJS的扩展模块可以帮我们优雅地完成这类事情:ngDialog。
ngDialog在github上提供了一个示例网页,演示了它的各种用法,在这里:https://githubcom/likeastore/ngDialog/blob/master/example/indexhtml。ngDialog的github主页的readme也对常用的指令和服务做了较为详细的介绍,可以参考。我这篇就纯粹是参考ngDialog的示例来的。
创建对话框可以是用ngDialogopen(options)或ngDialogopenConfirm(options)。前者打开一个普通的对话框,可以通过options制定诸如主题、模板等一系列属性,后者打开一个默认拒绝escape关闭和点击对话框之外自动关闭的对话框。options是json对象,类似下面:
{template: 'tplId',closeByEscape: false}示例搭建
先看下我的简单示例。使用express generator创建一个新应用,或者直接使用Nodejs开发入门——使用cookie保持登录里的LoginDemo示例。都成。
添加自己写的文件
有三个自己写的文件,ngdialoghtml和serverTplhtml文件放在项目的public目录下,ngdialogjs放在public/javascripts下面。
ngdialoghtml内容:
<!doctype html>
<html ng-app="myApp">
<head>
<title>use ngDialog in AngularJS</title>
<link rel='stylesheet' href='/stylesheets/ngDialog-040mincss' ><link/>
<link rel='stylesheet' href='/stylesheets/ngDialog-theme-default-040mincss' ><link/>
<link rel='stylesheet' href='/stylesheets/ngDialog-theme-plain-040mincss' ><link/>
</head>
<body ng-controller='myController'>
<p><button type='button' ng-click='openDialog()'>Open Default</button></p>
<p><button type='button' ng-click='openPlainDialog()'>Open Plain theme</button></p>
<p><button type='button' ng-click='openDialogUseText()'>Open use text</button></p>
<p><button type='button' ng-click='openModal()'>Open modal</button></p>
<p><button type='button' ng-click='openUseExternalTemplate()'>Open use template on server</button></p>
<p><button type='button' ng-click='openConfirmDialog()'>Open Confirm</button></p>
<script src="/javascripts/angular-143minjs"></script>
<script src="/javascripts/ngDialog-040minjs"></script>
<script src="/javascripts/ngdialogjs"></script>
<!-- Templates -->
<script type="text/ng-template" id="firstDialogId">
<p><p>text in dialog</p></p>
</script>
</body>
</html>ngdialogjs内容:
angularmodule('myApp', ['ngDialog'])
controller('myController', function($scope,$rootScope, ngDialog){
$scopetemplate = '<p><p>text in dialog</p><p><button type="button">Button</button></p><p>';
//different template
$scopeopenDialog = function(){
ngDialogopen({template: 'firstDialogId'});
};
$scopeopenPlainDialog = function(){
ngDialogopen({
template: 'firstDialogId', //use template id defined in HTML
className: 'ngdialog-theme-plain'
});
}
$scopeopenDialogUseText = function(){
ngDialogopen({
template: $scopetemplate, //use plain text as template
plain: true,
className: 'ngdialog-theme-plain'
});
}
$scopeopenModal = function(){
ngDialogopen({
template: '<p>Text in Modal Dialog</p>',
plain: true,
className: 'ngdialog-theme-default',
closeByEscape: false,
closeByDocument: false
});
}
$scopeopenUseExternalTemplate = function(){
ngDialogopen({
template: 'serverTplhtml',
plain: false,
className: 'ngdialog-theme-default',
closeByEscape: false,
closeByDocument: false
});
};
$rootScopeuserName = "ZhangSan";
$scopeopenConfirmDialog = function(){
ngDialogopenConfirm({
template: '<p class="ngdialog-message"><h3>Please enter your name</h3><p>User Name:<input ng-model="userName"></input></p></p><p class="ngdialog-buttons"><button type="button" class="ngdialog-button ngdialog-button-primary" ng-click="closeThisDialog()">Cancel</button><button type="button" class="ngdialog-button ngdialog-button-primary" ng-click="confirm(userName)">Confirm</button></p>',
plain: true,
className: 'ngdialog-theme-default'
})then(
function(value){
consolelog('confirmed, value - ', value);
},
function(reason){
consolelog('rejected, reason - ', reason);
}
);
}
//listen events
$rootScope$on('ngDialogopened', function (e, $dialog) {
consolelog('ngDialog opened: ' + $dialogattr('id'));
});
$rootScope$on('ngDialogclosed', function (e, $dialog) {
consolelog('ngDialog closed: ' + $dialogattr('id'));
});
});serverTplhtml内容:
<!doctype html>
<html>
<head>
<title>A Server Template for ngDialog</title>
</head>
<body>
<p>
<h3>Server Template for ngDialog</h3>
<li>Nodejs</li>
<li>Express</li>
<li>AngularJS</li>
<li>MongoDB</li>
</p>
</body>
</html>引入ngDialog
要使用ngDialog,需要在HTML中使用script引入对应的js库文件。另外还要在head部分引入几个css文件。参考ngdialoghtml即可。
ngDialog的库文件可以到https://githubcom/likeastore/ngDialog下载,或者到这里下载:http://cdnjscom/libraries/ng-dialog。我是在后面这个链接下的040版本,把文件重命名了一下。重命名后的几个文件如下:
ngDialog-040minjs
ngDialog-040mincss
ngDialog-theme-default-040mincss
ngDialog-theme-plain-040mincss
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" id="firstDialogId"><p><p>text in dialog</p></p></script>
以外部的html片段(文件)为模板,比如“template: ‘serverTplhtml'”,serverTplhtml文件在服务器上。
指定主题
可以在options里通过className指定主题,目前有ngdialog-theme-default和ngdialog-theme-plain两个主题。这两个注意对应两个css文件,前面我们已经通过HTML引入了。
响应关闭等事件
对话框被关闭时,会发出一些事件,开发者可以监听这些事件来获得通知。具体事件有:
ngDialogopened
ngDialogclosing
ngDialogclosed
这些事件定义在$rootScope服务里,所以我们的controller构造函数必须依赖$rootScope。比如我们现在的模块定义和controller定义:
angularmodule(‘myApp', [‘ngDialog'])
controller(‘myController', function(scope,scope,rootScope, ngDialog){在模块定义里注明依赖ngDialog模块,在controller定义里注入了$rootScope和ngDialog。
如何监听事件,看ngdialogjs代码吧。
另外我们还可以在options中设置preCloseCallback,指定一个函数,这个函数在对话框取消关闭之前会调用到。https://githubcom/likeastore/ngDialog这里有说明。注意,是取消对话框时会调用到,如果确认,不会调到哦。所以,这个preCloseCallback通常在阻止或提醒用户放弃输入时使用,比如用户注册,输入了一些信息,想退,你可以问他是否要真的想放弃。
指定对话框的controller
可以通过options设置controller属性来给一个对话框指定控制器。这个控制器可以是内联(inline)的:
$scopeopenInlineController = function () {
$rootScopetheme = 'ngdialog-theme-plain';
ngDialogopen({
template: 'withInlineController',
controller: ['$scope', '$timeout', function ($scope, $timeout) {
var counter = 0;
var timeout;
function count() {
$scopeexampleExternalData = 'Counter ' + (counter++);
timeout = $timeout(count, 450);
}
count();
$scope$on('$destroy', function () {
$timeoutcancel(timeout);
});
}],
className: 'ngdialog-theme-plain'
});
};也可以是在js中定义的。比如我们在js里定义了一个名为“InsideCtrl”的controller,就可以在调用ngDialogopen(options)时在options里设置controller属性:
$scopeopenInsideController = function(){
ngDialogopen({
template: "serverTplhtml",
className: "ngdialog-theme-plain",
controller: "InsideCtrl"
});
};具体示例可以参考:https://githubcom/likeastore/ngDialog/blob/master/example/indexhtml。
确认对话框
比如让用户确认删除,让用户输入。使用openConfirm(options)就可以创建这样的对话框。ngDialog向$scope注入了两个函数,一个是confirm(value),一个是closeThisDialog(reason),分别用来确认关闭对话框,取消关闭对话框。将它们关联到确认和取消按钮上,就可以确认、取消对话框。
假如我要让用户输入用户名,可以用ng-model指令将作用域内某个变量和input绑定,在调用confirm时传入绑定的变量,这样就可以在confirm中拿到用户填写的值来做进一步处理。我们的示例中的openConfirmDialog按钮,点击后就弹出一个让用户输入名字的对话框,当用户输入完毕,点击Confirm按钮时,我们可以通过confirm方法的value参数获得用户名输入框的值。
相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
怎样操作Nodejs 使用jade模板引擎
Nodejs Express安装与使用详细介绍
ng发音为[ŋ];nk发音为[ŋk]
1、如果ng,nk 在单词结尾, 一般分别读[ŋ](g不发音),[ŋk]。
①sing:英 [sɪŋ] 美 [sɪŋ]
v唱(歌);演唱;鸣;啼;啼啭;呜呜作响;发嗖嗖声
n呜呜声,嗖嗖声;〈美口〉歌唱会
例:I sing about love most of the time
我大多唱爱情歌曲。
②thing:英 [θɪŋ] 美[θɪŋ]
n东西;物;物件;物品;事物;(个人的)用品,衣服;(某种)用具。
例:It isn't going to solve a single thing
这什么问题也解决不了。
③think:英[θɪŋk];美[θɪŋk]
v认为;以为;想;思索;思想;琢磨
n想;想法
例:he closed her eyes for a moment, trying to think
她闭了一会儿眼睛,努力思考着。
2、如果ng,nk不在单词结尾,ng的发音情况不一。nk的发音与在结尾一样,仍读[ŋk]。
①English:英 [ˈɪŋɡlɪʃ] 美 [ˈɪŋɡlɪʃ]
n英语;英文;(作为一门学科的)英语语言文学;英语学科;英格兰人(有时误用以指包括苏格兰、威尔士和北爱尔兰人在内的英国人)
adj英格兰的;英格兰人的;英语的
②orange:英 [ˈɒrɪndʒ] 美 [ˈɔːrɪndʒ]
n橙子;柑橘;橙汁;橙红色;橘**
adj橙红色的;橘**的;奥兰治党的,奥兰治社团的(新教政治团体,认为北爱尔兰应继续为英国一部分)
③blanket:英 [ˈblæŋkɪt] 美 [ˈblæŋkɪt]
n毯子;毛毯;厚层;厚的覆盖层
adj包括所有情形(或人员)的;总括的;综合的
v以厚层覆盖
扩展资料
英语音标学习的重要性就相当于我们母语拼音字母学习的重要性,只有将英语的音标学习掌握好了
以后才能更好学习英语单词。
英语音标的应用贯穿于整体英语的学习生涯。音标的正确发音是单词正确发音的基础,所以要想自己以后可以讲一口地道的英语就要好好学习英语音标。
要想将英语音标练习好,首先需要知道英语的音标有哪些。
英语的音标有20个元音而其中的12个是单元音、8个是双元音,英语的辅音总共有28个而其中的11个是清辅音、其中的17个为浊辅音。
洁面仪这个物件要不要买,我想还是根据个人需求吧,如果你资金充裕,又能坚持使用可以买来用一下,确实洗的比较干净。
推荐softie多功能洁面仪。softie这款多功能洁面仪既能当洁面仪又能当电动牙刷,一机两用,是不是感觉很厉害。它有四个档:清洁、美白、按摩、洁面,既然是介绍洁面仪咱们就先说说它的洁面功能吧,它的洁面的刷头是圆圈状的,看起来非常小巧、可爱、精致,刷毛细腻柔软,上脸非常舒服,配合洗面奶能打出丰富细腻的泡沫,清洁效果还可以,但是因为刷头比较小可能会加长清洗时间。softie这款多功能洁面仪另一个功能就是可以当电动牙刷,洁面刷头和电动牙刷刷头转换十分方便,牙刷刷毛也是很柔软的,刷感很赞,作为牙龈敏感的我也是喜欢的不得了。
推荐这款洗面仪还有一个原因就是携带方便,出门在外一套搞定,所以它这么多优点怎么买都不会踩雷吧。
NG是质量单位。
NG代表的是纳克,
1纳克等于0001微克,也等于0000001毫克。
扩展资料:
纳克与常见质量单位的换算:
1克=1000000000纳克
1毫克=1000000纳克
1微克=1000纳克
1纳克=1000皮克
参考资料:
本篇文章主要的讲解了angularjs 用ng-repeat做成表格合并的效果,这里有ng-repeat做成表格合并的实例,还不看过来。接下来我们一起来看这篇文章吧描述使用angularJs做出表格合并的效果
后端返回的数据
[
{"fileName":"111pcap00","startTime":"2018-06-05 10:16:04","taskName":"111","taskId":58,"fileId":72},
{"fileName":"111pcap01","startTime":"2018-06-05 10:16:55","taskName":"111","taskId":58,"fileId":73},
{"fileName":"aaapcap00","startTime":"2018-06-05 10:10:28","taskName":"aaa","taskId":57,"fileId":71},
{"fileName":"wwwpcap00","startTime":"2018-06-05 10:50:28","taskName":"www","taskId":59,"fileId":79}
]背景:为了能更直观的查看表格中相同的taskName所包含的数据,合并列名为taskName且值相等的行,期望效果如下图:
分析:首先看后端返回的数据,是个一维数组,直接使用ng-repeat遍历行(tr)得到的是一个不带合并效果的表格,如图:
怎么解决呢?想到的一种方案就是把taskName相同的数据合并成一条,再进行遍历。
(想看更多就到PHP中文网angularjs学习手册中学习)
实现方案首先对原始数据进行处理,在我这里是把taskName相同的,合并成一条数据,重新处理以后的数据如下:
[
{"taskName":"111","fileList":[{"fileName":"111pcap00","startTime":"2018-06-05 10:16:04","taskName":"111","taskId":58,"fileId":72},{"fileName":"111pcap01","startTime":"2018-06-05 10:16:55","taskName":"111","taskId":58,"fileId":73}]},
{"taskName":"aaa","fileList":[{"fileName":"aaapcap00","startTime":"2018-06-05 10:10:28","taskName":"aaa","taskId":57,"fileId":71}]},
{"taskName":"www","fileList":[{"fileName":"wwwpcap00","startTime":"2018-06-05 10:50:28","taskName":"www","taskId":59,"fileId":79}]}
]重新构造的方法如下,数组list便是处理的结果,只需要把list赋值给$scope变量便可在页面上使用
var list = [];
angularforEach(sourceData,function (item) {
for(var i=0;i<listlength;i++){
if(list[i]taskName === itemtaskName){
list[i]fileListpush(item);
return;
}
}
listpush({
taskName:itemtaskName,
fileList:[item]
});
});现在看html这里,如果仍然在<tr>上进行ng-repeat,得不到预期效果。需要在上一层也就是<tbody>上遍历,因为每条数据都包含字段taskName,在做合并时只需要保留一个,使用ng-if='$index==0'控制。
<tbody ng-repeat="file in tableData">
<tr ng-repeat="item in filefileList">
<td ng-if="$index ==0" rowspan="{{filefileListlength}}">{{filetaskName}}</td>
<td>{{itemfileName}}</td>
<td>{{itemstartTime}}</td>
<td class="table-col-operate">
<span>
<a ng-click="capturedownload(itemfileId)">下载</a>
<span class="text-red " ng-click="capturedeleteCapture(item)">删除</span>
</span>
</td>
</tr>
</tbody>总结在写重新构造原数组的方法时遇到问题,写的比较复杂,后来经过同事的点播,使用了现在比较简洁的方式。
另外,实现的方式不只一种,我也试了其他的,都没有这个简单。
本篇文章到这就结束了(想看更多就到PHP中文网angularjs学习手册中学习),有问题的可以在下方留言提问
NG是什么意思啊求大神帮助
对于NG有多种含义了,看用在什么场合,拍**时意为不满意、重来,即NO Good的意思;对制造产品而言,是不合格,不通过的意思,即No GO,还有等等啦,但是NG不代表永远的失败!
win是什么意思啊求大神帮助是赢,胜利 的意思罗(^__^) 嘻嘻……
JB是什么意思啊?求大神帮助就是网路用语,是骂人的,意思是“鸡 巴”
记得采纳啊
Happg是什么意思啊求大神帮助你说的happy 吧? happy是快乐的意思
麻烦采纳,谢谢!
ZM是什么意思啊?求大神帮助火影忍者(岸本齐史作)中一个很有人气的BL配对,总体来说在现在的火影迷中有接近一半的人成为这个王道的拥护者,从两人的一吻定情开始广大的漫迷就把作者岸本在潜意识里定义为一个同人男,于是随着剧情渐渐的发展,在许多情节里佐鸣都暧昧的可以,所以就产生了一个争议纷纷的王道——佐鸣(ZM)。 另外明星周觅也称ZM
麻烦采纳,谢谢!
sicronise是什么意思啊求大神帮助
sicronise 是synchronize的之误拼,synchronize这个词有几部分组成,syn是一个希腊词根,意思是“together”, chron源自于chronos,意为time, ize是动词字尾,意为“化”,如此,synchronize的意思就是“同时化, 同时发生,使同步”。在Lenka的那首歌中,synchronize就是指“时间上同步”。 谢谢采纳
peter是什么意思啊求大神帮助peter vi 逐渐消失 Peter n 彼得(男子名)
记得采纳啊
290是什么意思啊?求大神帮助290网路用语,分解为250+38+2二百五+三八+2B ------------------------------------------------------------------------------------------------------------------------------ 没什么好修改的本来就是这个意思,而且这种解释已经在春晚上通过了,管理员再遮蔽就没有必要了吧
NNB是什么意思啊?求大神帮助网路词语。就是N牛B的意思,简单点说就是非常牛逼
BAU是什么意思啊求大神帮助Behavioural Analysis Unit 的简称,是FBI(美国联邦调查局)的行为分析部。BAU(行为分析部)的任务是根据对犯罪嫌疑人行为的调查和基于对案件的经验、研究来证实其可操作性,针对复杂的和犯罪嫌疑人心理敏感的案件,通常涉及暴力行为和暴力威胁,涉及到的领域包括危害儿童犯罪,危害成人,威胁、腐败、爆炸和纵火型别的案件。
欢迎分享,转载请注明来源:品搜搜测评网