Dieses Mal werde ich Ihnen die Implementierungsschritte für die Verwendung des Dialogfelds ngDialog in Node.js ausführlich erläutern. Das Folgende ist ein praktischer Fall Schauen Sie mal rein.
Beim Erstellen einer Website stoßen wir häufig auf Situationen, in denen ein Dialogfeld angezeigt wird, in dem Benutzereingaben eingeholt werden, oder ein Dialogfeld angezeigt wird, in dem der Benutzer aufgefordert wird, einen Vorgang zu bestätigen. Es gibt ein auf AngularJS basierendes Erweiterungsmodul, das dies kann Helfen Sie uns, so etwas elegant zu bewerkstelligen: ngDialog.
ngDialog bietet hier eine Beispielwebseite auf Github, die die verschiedenen Einsatzmöglichkeiten demonstriert: https://github.com/likeastore/ngDialog/blob/master/example/index.html. Die Readme-Datei auf der Github-Homepage von ngDialog bietet außerdem eine detailliertere Einführung in häufig verwendete Anweisungen und Dienste, auf die Sie verweisen können. Mein Artikel basiert ausschließlich auf dem ngDialog-Beispiel.
Das Erstellen eines Dialogfelds kann mit ngDialog.open(options) oder ngDialog.openConfirm(options) erfolgen. Ersteres öffnet ein normales Dialogfeld, und eine Reihe von Attributen wie Themen und Vorlagen können über Optionen angegeben werden. Letzteres öffnet ein Dialogfeld, das standardmäßig nicht geschlossen werden kann und außerhalb des Dialogfelds automatisch geschlossen wird. Optionen ist ein JSON-Objekt, ähnlich dem folgenden:
{template: 'tplId',closeByEscape: false}
Beispielsetup
Werfen wir zunächst einen Blick auf mein einfaches Beispiel. Verwenden Sie den Express-Generator, um eine neue Anwendung zu erstellen, oder verwenden Sie direkt das LoginDemo-Beispiel in Erste Schritte mit der Node.js-Entwicklung – Verwenden von Cookies, um angemeldet zu bleiben. Alles ist erledigt.
Fügen Sie die von Ihnen geschriebenen Dateien hinzu
Die Dateien ngdialog.html und serverTpl.html werden im öffentlichen Verzeichnis des Projekts abgelegt .js wird im öffentlichen Verzeichnis des Projekts unter public/javascripts abgelegt.
ngdialog.html-Inhalt:
<!doctype html> <html ng-app="myApp"> <head> <title>use ngDialog in AngularJS</title> <link rel='stylesheet' href='/stylesheets/ngDialog-0.4.0.min.css' ><link/> <link rel='stylesheet' href='/stylesheets/ngDialog-theme-default-0.4.0.min.css' ><link/> <link rel='stylesheet' href='/stylesheets/ngDialog-theme-plain-0.4.0.min.css' ><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-1.4.3.min.js"></script> <script src="/javascripts/ngDialog-0.4.0.min.js"></script> <script src="/javascripts/ngdialog.js"></script> <!-- Templates --> <script type="text/ng-template" id="firstDialogId"> <p><p>text in dialog</p></p> </script> </body> </html>
ngdialog.js-Inhalt:
angular.module('myApp', ['ngDialog']). controller('myController', function($scope,$rootScope, ngDialog){ $scope.template = '<p><p>text in dialog</p><p><button type="button">Button</button></p><p>'; //different template $scope.openDialog = function(){ ngDialog.open({template: 'firstDialogId'}); }; $scope.openPlainDialog = function(){ ngDialog.open({ template: 'firstDialogId', //use template id defined in HTML className: 'ngdialog-theme-plain' }); } $scope.openDialogUseText = function(){ ngDialog.open({ template: $scope.template, //use plain text as template plain: true, className: 'ngdialog-theme-plain' }); } $scope.openModal = function(){ ngDialog.open({ template: '<p>Text in Modal Dialog</p>', plain: true, className: 'ngdialog-theme-default', closeByEscape: false, closeByDocument: false }); } $scope.openUseExternalTemplate = function(){ ngDialog.open({ template: 'serverTpl.html', plain: false, className: 'ngdialog-theme-default', closeByEscape: false, closeByDocument: false }); }; $rootScope.userName = "ZhangSan"; $scope.openConfirmDialog = function(){ ngDialog.openConfirm({ 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){ console.log('confirmed, value - ', value); }, function(reason){ console.log('rejected, reason - ', reason); } ); } //listen events $rootScope.$on('ngDialog.opened', function (e, $dialog) { console.log('ngDialog opened: ' + $dialog.attr('id')); }); $rootScope.$on('ngDialog.closed', function (e, $dialog) { console.log('ngDialog closed: ' + $dialog.attr('id')); }); });
serverTpl.html-Inhalt:
<!doctype html> <html> <head> <title>A Server Template for ngDialog</title> </head> <body> <p> <h3>Server Template for ngDialog</h3> <li>Node.js</li> <li>Express</li> <li>AngularJS</li> <li>MongoDB</li> </p> </body> </html>
Wir stellen vor: ngDialog
Um ngDialog zu verwenden, müssen Sie ein Skript in HTML verwenden, um die entsprechende js-Bibliotheksdatei einzuführen. Darüber hinaus müssen im Kopfteil mehrere CSS-Dateien eingefügt werden. Beziehen Sie sich einfach auf ngdialog.html.
Die Bibliotheksdatei von ngDialog kann von https://github.com/likeastore/ngDialog oder hier heruntergeladen werden: http://cdnjs.com/libraries/ng-dialog. Ich habe die Datei unter dem untenstehenden Link in Version 0.4.0 umbenannt. Die umbenannten Dateien lauten wie folgt:
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-Zusammenfassung des Lernens
Ich bin beim Lernen auf einige Zweifel gestoßen, die unten aufgeführt sind.
Dialoginhaltsvorlage
Um ein Dialogfeld anzuzeigen, müssen Sie den anzuzeigenden Inhalt angeben. Dies wird über das Template-Attribut angegeben. Es gibt drei Fälle von Vorlagen:
Eine in JS- oder HTML-Code eingebettete Nur-Text-Vorlage. Zu diesem Zeitpunkt müssen Sie das Plain-Attribut gleichzeitig in den Optionen auf true setzen. das heißt „plain:true“, und weisen Sie dann der Vorlage direkt einen HTML-Code zu, z. B. template:
Text in ngDialog
Define die Vorlagenvorlage in HTML und weisen Sie der Vorlage einen Wert zu, z. B. „template: ‚templateId‘“. Die Vorlage könnte so aussehen:
Nehmen Sie ein externes HTML-Fragment (Datei) als Vorlage, z. B. „Vorlage: ‚serverTpl.html‘“, die Datei serverTpl.html befindet sich auf dem Server.
Geben Sie das Thema an
Sie können das Thema über „className“ in den Optionen angeben. Derzeit gibt es ngdialog-theme-. default und ngdialog -theme-plain zwei Themes. Diese beiden Notizen entsprechen zwei CSS-Dateien, die wir zuvor über HTML eingeführt haben.
Reaktion auf Ereignisse wie Schließen
Wenn das Dialogfeld geschlossen wird, werden einige Ereignisse ausgegeben, und Entwickler können diese Ereignisse abhören um Benachrichtigungen zu erhalten. Die spezifischen Ereignisse sind:
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。
确认对话框
比如让用户确认删除,让用户输入。使用openConfirm(options)就可以创建这样的对话框。ngDialog向$scope注入了两个函数,一个是confirm(value),一个是closeThisDialog(reason),分别用来确认关闭对话框,取消关闭对话框。将它们关联到确认和取消按钮上,就可以确认、取消对话框。
假如我要让用户输入用户名,可以用ng-model指令将作用域内某个变量和input绑定,在调用confirm时传入绑定的变量,这样就可以在confirm中拿到用户填写的值来做进一步处理。我们的示例中的openConfirmDialog按钮,点击后就弹出一个让用户输入名字的对话框,当用户输入完毕,点击Confirm按钮时,我们可以通过confirm方法的value参数获得用户名输入框的值。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zum Implementieren des Dialogfelds ngDialog in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!