検索
ホームページウェブフロントエンドjsチュートリアルAngularJS イベントの発行についてどれくらい知っていますか? この記事では、AngularJS イベントの詳細について知りたいことを説明します。

この記事では主に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'));
                }
            }
        };
    });

功能实现

注销时清除缓存

注销时如果不清除缓存,下一个用户登录时用的就是上一用户留下来的缓存,造成信息提示错误。

AngularJS イベントの発行についてどれくらい知っていますか? この記事では、AngularJS イベントの詳細について知りたいことを説明します。

阅读时重新执行指令

下图就是该实现的难点。

该用户有一条未读消息,当用户点击阅读这条消息时,将该消息的状态设置为已读,然后右上角的未读条数同时修改。但是点击这个事件是发生在控制器中,而消息又是一个额外的指令,两者毫无联系。(想学更多就到PHP中文网angularjs参考手册栏目中学习)

AngularJS イベントの発行についてどれくらい知っていますか? この記事では、AngularJS イベントの詳細について知りたいことを説明します。

AngularJS的精髓就是Scope,这是两个Scope,页面内容是我们的控制器Scope,右上角的消息处是我们的未读消息指令Scope

如若是简单的父子Scope关系,我们可以从控制器传参数到指令,指令watch这个参数,根据控制器对参数的变动让指令做出响应。但是这两个Scope毫无关系,我们怎么办呢?

AngularJS イベントの発行についてどれくらい知っていますか? この記事では、AngularJS イベントの詳細について知りたいことを説明します。

事件发布

查阅了相关资料,AngularJSScope可以发布事件。

$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();
            }
        };
    });
AngularJS イベントの発行についてどれくらい知っていますか? この記事では、AngularJS イベントの詳細について知りたいことを説明します。機能実装ログアウト時にキャッシュをクリア

ログアウト時にキャッシュをクリアしないと、次のユーザーがログイン時に前のユーザーが残したキャッシュを使用することになり、エラーメッセージが表示されます。

AngularJS イベントの発行についてどれくらい知っていますか? この記事では、AngularJS イベントの詳細について知りたいことを説明します。

読み取り中に命令を再実行します

下の図は、この実装の難しさを示しています。
ユーザーが未読メッセージをクリックしてメッセージを読むと、メッセージのステータスが既読に設定され、同時に右上隅の未読メッセージの数が変更されます。ただし、クリック イベントはコントローラで発生し、メッセージは追加の指示であり、この 2 つは関連性がありません。 (さらに詳しく知りたい場合は、PHP 中国語 Web サイト

angularjs リファレンス マニュアル

の列にアクセスして学習してください)

🎜AngularJS イベントの発行についてどれくらい知っていますか? この記事では、AngularJS イベントの詳細について知りたいことを説明します。🎜🎜🎜AngularJS の本質は Scope であり、2 つの Scope です。ページのコンテンツはコントローラの Scope で、右上隅のメッセージは未読メッセージ コマンド Scope です。 🎜🎜単純な親子 Scope 関係の場合、コマンド watch のパラメータによって、コントローラからコマンドにパラメータを渡すことができます。コントローラーのパラメーターの変化に基づいて。しかし、これら 2 つの Scope は相互に関係がありません。どうすればよいでしょうか。 🎜🎜🎜AngularJS イベントの発行についてどれくらい知っていますか? この記事では、AngularJS イベントの詳細について知りたいことを説明します。🎜 🎜🎜イベント発行🎜🎜 関連情報を参照した後、AngularJSScope でイベントを発行できます。 🎜

$broadcast(name, args);

rrreee🎜 は、すべての子の Scope にイベントを下位に配布し、登録された Scope に通知します。 🎜

$emit(name, args);

rrreee🎜 $broadcast と似ていますが、これはイベントを上向きに公開するために使用される点が異なります。 🎜

$on(name,listener);

rrreee🎜 指定されたタイプのイベントをリッスンします。 🎜🎜コード実装🎜

$rootScope

🎜 これら 2 つのコントローラーと命令の間の Scope 関係を考慮すると、上方向も下方向も受信できません。 🎜🎜ここでは、$rootScope を使用してイベントを直接公開し、すべての Scope がイベントを取得できるようにします。現在の Scope と宛先の Scope の間の関係を考慮する必要がなくなります。 🎜rrreee🎜各層間の責任のため、イベント発行はメソッドコントローラー内にあるべきであり、ServiceService などに配置すべきではないと思います。他のファイルと結合しないでください。結合しないと変更が困難になります。 🎜

$on

🎜 コマンドをリファクタリングし、$on を使用してイベント発行をリッスンし、対応するロジックを実行して右上隅に未読メッセージの数を再表示します。 🎜rrreee🎜🎜上記はこの記事の全内容です。さらに詳しく読みたい場合は、PHP 中国語 Web サイトの 🎜angularjs Learning Manual🎜 列にアクセスして、angularjs について詳しく学習してください。ご質問がございましたら、以下にメッセージを残してください。 🎜🎜【編集者のおすすめ】🎜🎜🎜angularjsフィルターの使い方をご存知ですか? angularjsフィルターの詳細な説明を見てみましょう🎜🎜🎜🎜🎜angularjsで式を使用するにはどうすればよいですか? angularjsでの式の使用例🎜🎜🎜🎜🎜🎜

以上がAngularJS イベントの発行についてどれくらい知っていますか? この記事では、AngularJS イベントの詳細について知りたいことを説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

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

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

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

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

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

JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

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

JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

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

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

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

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

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

JavaScriptをインストールするにはどうすればよいですか?JavaScriptをインストールするにはどうすればよいですか?Apr 05, 2025 am 12:16 AM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

MinGW - Minimalist GNU for Windows

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 新バージョン

SublimeText3 Linux 最新バージョン

DVWA

DVWA

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Safe Exam Browser

Safe Exam Browser

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