58

私はAngularJSを学び始めたばかりで、AngularJSのいくつかの概念に苦労しています。誰かが私にいくつかのポイントを説明してくれるといいですね...

  1. これは技術的には(ここng-clickを参照)と同じではないことを理解していますが、両方ともマークアップに配置されています。それは「悪い習慣」だと思いましたか?ほとんどの人がこれを「悪い」と言っているのに、なぜこれがAngularJSのコアコンセプトの1つなのですか?マークアップにロジックを配置するのではなく、JavaScriptからDOM要素を選択する方がよいと思いました。onclick

  2. AngularJSのクリックイベントに反応する正しい方法である場合ng-click、他のDOMイベントをどうすればよいですか?のような他のディレクティブがいくつかあるようng-mouseoverですが、すべてのDOMイベントに同等のAngularJSがあるわけではありません。AngularJSで「drop」イベントをどのように処理しますか(したがって、AngularJSの方法で-通常の方法ではありません)?明確にするために:ファイルを自分のWebアプリケーションにドラッグしたいと思います。

どうもありがとう、ピポ

4

2 に答える 2

54

ほとんどの人がこれを「悪い」と言うなら、なぜこれが AngularJS のコアコンセプトの 1 つなのですか?

Unobtrusive JavaScriptが本当に好きな人は、それは悪いと言うかもしれません。アンギュラリアン (および柔軟な背景を持つ人) は、より宣言的なアプローチに価値を見出します。

「Angular は、UI の構築とソフトウェア コンポーネントの相互接続に関しては、宣言型コードの方が命令型よりも優れているという信念に基づいて構築されています。アプリケーションの状態が変化したときに UI がどのように変化するかを宣言的に記述することにより、低レベルの DOM 操作から解放されます。タスク --概要ドキュメント

Bootstrap、Angular.js、および Ember.js で使用されるデータ属性オプションは控えめな Javascript の原則と競合しませんか?も参照してください。

他の DOM イベントはどうすればよいですか?

それらをリッスンする独自のディレクティブを作成します (または、他の誰かが既に作成したディレクティブを見つけます)。Angular を使用すると、独自のディレクティブを作成することで、ブラウザーでできることを拡張できます。

更新: 以下のコメントで、Tim Stewart は AngularUI のui-eventについて言及しています。これにより、Angular でネイティブにサポートされていないイベントにコールバックをバインドできます。

于 2013-01-15T20:42:20.007 に答える
5

本来、Angular が適切に機能するためには、マークアップに要素が必要です。さらに、これらの要素は、ほとんどの場合、変更されるたびに「コンパイル」する必要があります。そのため、JavaScript に関係なく、すでに多少「邪魔」になっています。マークアップを単純に置き換えて、jQuery などでできるようにすべてを自動的にバインドすることはできません。

厳密に言えば控えめな JavaScript: 1. 構造と動作を分離し、コードをよりクリーンにし、スクリプトのメンテナンスを容易にする 2. ブラウザーの非互換性を回避する 3. クリーンでセマンティックな HTML レイヤーで動作する ( Wikipedia )

確かに、それはAngularではありません。すべてに対して双方向バインディングを実現するために、jQuery のようにクラス名や ID を使用するのではなく、DOM でカスタム バインディング ポイントを作成することを選択しました。(やや非標準的なアプローチですが、明らかに機能します。)

しかし、それを考える本当の方法は次のとおりです。基本的に、マークアップの各制御セクションは、実際にはもはや単純な HTML ではありません。これは実際にはテンプレートに近いものになっているため、レンダリングの準備をしているエンジンとの対話が必要です。そのため、目立たないという従来のルールは実際には適用されません... (FWIW、私は、要素がページに追加されたときに要素をイベントに自動的にバインドする jQuery.on() 関数の大ファン/ユーザーです。非常にクリーンで柔軟です, 私見, Angular に同様のメカニズムがあればいいのにと思います. 同じイベントハンドラーを自動的に呼び出すページ上の複数の場所にあるアイテムにクラスを追加するのが好きです. 単一の場所でコードを変更することは、良いことですが、私は脱線します...)

私にとって、より大きな問題は進歩的なデザインの問題です。JavaScript をまったく有効にしなくても Web ページは機能しますか? 誰かが本当にそれを気にしますか?うーん...

于 2014-07-21T20:30:09.013 に答える