正しくフィルタリングするか、Angular.Jsでの有害なフィルタリングのヒント





みなさんこんにちは。 この記事は長い間書かれたもので、何度か書き直されましたが、最終的には気に入らなかったのです。 あまりにも多くのメンタートーン。 そして、突然、金曜日が来て、スプリントの終わりになりますので、リラックスできます。 そのため、Angular.JSでフィルターを準備する方法に関するいくつかのヒントだけを真剣に受け止めないでください。



少しリラックスしたい、またはリラックスしたい人-カットの下に進んで、すべてが良い金曜日を持っています!



1.いつでもどこでもフィルターを使用します。 ページタイトル、列名、製品リスト。 フィルタはダイジェストごとに実行されるため、ユーザーは間違いなく何も見逃しません。 ページ上のフィルターが多いほど良いです。 さらに、各フィルターにロジックを追加できます。



2.フィルターをユニバーサルにします。 フィルタはすべてをフィルタリングできる必要があります。 製品から組み込みbase-64まで。 フィルターが1つ、パラメーターが20個ほどあれば、チームは満足しています。 結局のところ、すべてが箱から出して動作するので、何も書く必要はありません。 また、このフィルターがテキストを小文字に変換する方法も知っている場合、認識はあなたを見つけます。 必然的に。



3.常にログをログに追加します。 したがって、デバッグははるかに簡単です。 そして、一言で言えば、あなたのログを解析する人は間違いなく仕事なしに残されないでしょう。



4.フィルターに一般的な名前のみを付けます。 後で誰かがそれを普遍化したとしたらどうでしょう! 後で名前を変更しないでください! さらに、同僚がマークアップを読むことははるかに興味深いでしょう。 あなたは彼らにクエストを与えると言うことができます。 無料です。



5. Infinitie Scrollは、フィルターにのみ実装し、データをロードしないでください。 サーバーにアクセスし、テーブル全体をアンロードしてから、フィルターを機能させました。 あなたがそれらを書いたのも不思議ではありません。 サーバーの負荷が少なくなり、ホスティングの費用を抑えることができ、感謝しています。



6.ビジネスロジックはフィルターにのみ配置する必要があります。 なぜなら-「そして」-カプセル化。



7.通常、フィルター内のすべてのロジックを非表示にします。 とても信頼できます。 それが機能しない場合は、少なくとも最も「難しい」ものです。 そして、難しいほど良い。 そこで、あらゆる種類の複雑な計算を行ったり、DOMを変更したりできます。 いっそのこと、サーバーを引っ張ってください。 フィルターからまっすぐ。 ユーザーはトレーニングしません、待ってください! ただし、最も薄いサービスとコントローラーがあります。 次のインタビューをただ自慢してください。



8. DOMといえば。 誰が指令を使用してそれを操作すべきだと言ったのですか? フィルター、これは$( '#user_icon')に最適な場所です。トリガー( 'クリック');



9.フィルターを接続します。 1つのフィルター、2番目のフィルターで何かが変化するようにします。 最高の$放送。 そして何よりも、着信データです。 したがって、デバッグは、Angularのコアの基本についての注意、集中、および知識を開発する、楽しくて面白いゲームに変わります。 一般に、常に$ broadcastを使用します。 お洒落です。



10.フィルターをチェーンで収集します! チェーンのフィルターが3つ未満の場合、これはコーシャではありません! フィルタ提案を書くこともできます。 同僚や好奇心users盛なユーザー向け。



11.フィルターをng-mouse-overと組み合わせます。 これは楽しい! マウスオーバーハンドラーには何も記述できません。 主なことは、それを体に掛けて金曜日の夜に確認することです。 継続的インテグレーションをお持ちの場合は特に喜ばれます。



12.最適化しないでください。 第一に、初期の最適化は強制終了します。 第二に、これはフレームワークの仕事です。 あなたは他の誰かの仕事をしませんよね?



@By StGeass



13.ダイジェストを変更するときは、ハンドラーとしてフィルターを使用してください!



14.これにより、フィルター内で$スコープ全体のコンテキストを直接変更します。 アンギュラーのバージョンではこれができませんか? 引数を右にスクロールして、もう一度変更してください!



そして最も重要なことは、知っています。 アプリケーションの速度を低下させるフィルターはありません。 開発者としてのあなたの誤解と過小評価!



好奇心のために。
Angularのフィルターは、すべてのダイジェストが呼び出されるような機能です。 つまり 頻繁に、非常に頻繁に、そして数回続けて。 ろ過の開始を制御することはできません;終了を制御することはありません。 イベントの発生は役に立たず、困難です。 不注意に扱うと、アプリケーションが簡単にカボチャに変わります。 そして、はい、フィルターを最適化するためのすぐに使えるツールもありません。



もっと好奇心のために。
勝つことは簡単ではなく、誰もが特定のケースに対して独自のソリューションを見つけます。 たとえば、サイドでのフィルタリング、ng-change、isDirty、INotifyOnPropertyChange、キャッシング、$スコープの使用$ Watch(関数getData(){}、true)など。 後者ですが、さらに悪化する可能性があるため、お勧めしません。 彼らはまたCodeReviewが役立つと言いますが、それは一般にシャーマニズムです。



最も好奇心のために。
.directive('onRepeatFinish', [function () { return { restrict: 'A', link: function (scope, elem, attr) { if (scope.$last === true) { console.log('ngRepeatFinished'); }; } } }]);
      
      





どちらかといえば、パラメーター化されたフィルターのこの「これ」は機能しません。





皆さん、こんにちは。



All Articles