


AngularJS イベントの発行についてどれくらい知っていますか? この記事では、AngularJS イベントの詳細について知りたいことを説明します。
この記事では主にangularjsイベントのリリースについて詳しく紹介します。それでは、急いでこの記事を一緒に読んでください
未読メッセージリマインダー:
機器の使用者または技術機関が非強制検査機器の校正申請に対して新たな意見を出した場合、相手方に通知する必要があります。メッセージ。バックエンドは非常に単純です。この記事では主にフロントエンドで発生する問題を解決します。
歴史的遺産
これは、キャッシュ superCache
を使用して、メッセージに残った未読メッセージをカウントするコマンドです。 superCache
。
一眼看去应该能发现这个if...else
的问题,第一次请求,将数据放到缓存里,之后就一直从缓存中取了,这肯定有问题啊!原来有1
条消息,然后点击查看,然后这个指令仍然是从缓存中取的数据,还显示一条。
angular.module('webappApp') .directive('yunzhiUnReadMessageCount', function(ToMessageService, superCache) { return { template: '', restrict: 'E', // 元素 link: function postLink(scope, element) { // 判断缓存中是否存在未读消息数量 if (typeof superCache.get('unReadMessageCount') === 'undefined') { // 获取当前用户的所有未读收件消息 ToMessageService.pageReceiveUnReadMessageOfCurrentUser(undefined, function(data) { // 存入缓存 superCache.put('unReadMessageCount', data.totalElements); // 显示文本信息 element.text(superCache.get('unReadMessageCount')); }); } else { // 显示文本信息 element.text(superCache.get('unReadMessageCount')); } } }; });
功能实现
注销时清除缓存
注销时如果不清除缓存,下一个用户登录时用的就是上一用户留下来的缓存,造成信息提示错误。
阅读时重新执行指令
下图就是该实现的难点。
该用户有一条未读消息,当用户点击阅读这条消息时,将该消息的状态设置为已读,然后右上角的未读条数同时修改。但是点击这个事件是发生在控制器中,而消息又是一个额外的指令,两者毫无联系。(想学更多就到PHP中文网angularjs参考手册栏目中学习)
AngularJS
的精髓就是Scope
,这是两个Scope
,页面内容是我们的控制器Scope
,右上角的消息处是我们的未读消息指令Scope
。
如若是简单的父子Scope
关系,我们可以从控制器传参数到指令,指令watch
这个参数,根据控制器对参数的变动让指令做出响应。但是这两个Scope
毫无关系,我们怎么办呢?
事件发布
查阅了相关资料,AngularJS
中Scope
可以发布事件。
$broadcast(name, args);
Dispatches an event name downwards to all child scopes (and their children) notifying the registered $rootScope.Scope listeners.
向下分发一个事件给他的所有子Scope
,通知已注册的Scope
。
$emit(name, args);
Dispatches an event name upwards through the scope hierarchy notifying the registered $rootScope.Scope listeners.
与$broadcast
类似,只不过这个是用来向上发布事件的。
$on(name, listener);
Listens on events of a given type.
监听一个给定类型的事件。
代码实现
$rootScope
考虑到这两个控制器与指令之间Scope
的关系,无论是向上还是向下可能都接收不到。
这里直接用$rootScope
向下发布事件,保证所有Scope
都能获取到该事件。免得去考虑当前Scope
与目的Scope
之间的关系。
// 广播发布reloadMessageCount事件,重新计算未读消息数量 $rootScope.$broadcast('reloadMessageCount');
因为考虑到各个层之间的职责关系,我认为:事件发布应该方法控制器中,而不应该放在Service
中,Service
就等着被别人调用,不应该与其他文件有耦合关系,否则改起来很难改。
$on
重构指令,使用$on
if...else
の問題は一目でわかるはずです。最初のリクエストでデータがキャッシュに入れられ、その後もキャッシュからデータがフェッチされ続けます。それは間違っています! 1
メッセージがあることがわかり、それをクリックして表示すると、このコマンドは引き続きキャッシュからデータを取得し、1 つのメッセージが表示されます。
angular.module('webappApp') .directive('yunzhiUnReadMessageCount', function(ToMessageService, superCache) { return { template: '<b>{{ count }}</b>', restrict: 'E', // 元素 link: function postLink(scope) { var self = this; self.init = function() { self.computeMessageCount(); }; // 计算未读消息数量 self.computeMessageCount = function() { // 判断缓存中是否存在未读消息数量 if (angular.isUndefined(superCache.get('unReadMessageCount'))) { // 获取当前用户的所有未读收件消息 ToMessageService.pageReceiveUnReadMessageOfCurrentUser(undefined, function(data) { // 存入缓存 superCache.put('unReadMessageCount', data.totalElements); // 显示 scope.count = superCache.get('unReadMessageCount'); }); } else { scope.count = superCache.get('unReadMessageCount'); } }; // 处理reloadMessageCount事件的处理逻辑 scope.$on('reloadMessageCount', function() { // 清除缓存 superCache.remove('unReadMessageCount'); // 计算未读消息数量 self.computeMessageCount(); }); // 初始化 self.init(); } }; });

ログアウト時にキャッシュをクリアしないと、次のユーザーがログイン時に前のユーザーが残したキャッシュを使用することになり、エラーメッセージが表示されます。
読み取り中に命令を再実行します下の図は、この実装の難しさを示しています。
ユーザーが未読メッセージをクリックしてメッセージを読むと、メッセージのステータスが既読に設定され、同時に右上隅の未読メッセージの数が変更されます。ただし、クリック イベントはコントローラで発生し、メッセージは追加の指示であり、この 2 つは関連性がありません。 (さらに詳しく知りたい場合は、PHP 中国語 Web サイト
の列にアクセスして学習してください)
AngularJS
の本質は Scope
であり、2 つの Scope です。ページのコンテンツはコントローラの Scope
で、右上隅のメッセージは未読メッセージ コマンド Scope
です。 🎜🎜単純な親子 Scope
関係の場合、コマンド watch
のパラメータによって、コントローラからコマンドにパラメータを渡すことができます。コントローラーのパラメーターの変化に基づいて。しかし、これら 2 つの Scope
は相互に関係がありません。どうすればよいでしょうか。 🎜🎜🎜AngularJS
の Scope
でイベントを発行できます。 🎜$broadcast(name, args);
rrreee🎜 は、すべての子のScope
にイベントを下位に配布し、登録された Scope
に通知します。 🎜$emit(name, args);
rrreee🎜$broadcast
と似ていますが、これはイベントを上向きに公開するために使用される点が異なります。 🎜$on(name,listener);
rrreee🎜 指定されたタイプのイベントをリッスンします。 🎜🎜コード実装🎜$rootScope
🎜 これら 2 つのコントローラーと命令の間のScope
関係を考慮すると、上方向も下方向も受信できません。 🎜🎜ここでは、$rootScope
を使用してイベントを直接公開し、すべての Scope
がイベントを取得できるようにします。現在の Scope
と宛先の Scope
の間の関係を考慮する必要がなくなります。 🎜rrreee🎜各層間の責任のため、イベント発行はメソッドコントローラー内にあるべきであり、Service
、Service
などに配置すべきではないと思います。他のファイルと結合しないでください。結合しないと変更が困難になります。 🎜$on
🎜 コマンドをリファクタリングし、$on
を使用してイベント発行をリッスンし、対応するロジックを実行して右上隅に未読メッセージの数を再表示します。 🎜rrreee🎜🎜上記はこの記事の全内容です。さらに詳しく読みたい場合は、PHP 中国語 Web サイトの 🎜angularjs Learning Manual🎜 列にアクセスして、angularjs について詳しく学習してください。ご質問がございましたら、以下にメッセージを残してください。 🎜🎜【編集者のおすすめ】🎜🎜🎜angularjsフィルターの使い方をご存知ですか? angularjsフィルターの詳細な説明を見てみましょう🎜🎜🎜🎜🎜angularjsで式を使用するにはどうすればよいですか? angularjsでの式の使用例🎜🎜🎜🎜🎜🎜以上がAngularJS イベントの発行についてどれくらい知っていますか? この記事では、AngularJS イベントの詳細について知りたいことを説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
