ホームページ > ウェブフロントエンド > jsチュートリアル > AngularJS モバイル開発の落とし穴

AngularJS モバイル開発の落とし穴

高洛峰
リリース: 2016-11-18 11:52:35
オリジナル
1097 人が閲覧しました

相対的に言えば、Jquery は DOM 操作に重点を置いているのに対し、AngularJS はビュー モデルと双方向バインディングに重点を置いています。

DOM 操作の問題

要素ノードの追加、要素ノードの削除、要素コンテンツの取得、要素の非表示または表示など、DOM の操作に jQuery を使用しないでください。これらのアクションを実装するにはディレクティブを使用し、必要に応じて独自のディレクティブを作成する必要があります。

Web サイトの Web フロントエンド開発において、習慣を変えるのが難しい場合は、Web ページから jQuery を削除することを検討してください。実際、AngularJS の $http サービスは非常に強力で、基本的に jQuery の ajax 関数を置き換えることができます。AngularJS は jQLite に埋め込まれています?? これは、一般的に使用される jQuery DOM 操作メソッド、イベント バインディングなどを含む、内部的に実装された jQuery のサブセットです。 。ただし、これは、AngularJS を使用するときに jQuery を使用できないという意味ではありません。 Web ページに jQuery が読み込まれている場合、AngularJS は最初に jQuery を使用し、それ以外の場合は jQLite にフォールバックします。

モバイルアプリやモバイルWeb開発の場合、どうしてもjqueryの機能が必要な場合は、Zepto.jsを導入することをお勧めします。しかし、信じてください。AngularJS を使用すれば、Jquery は必要ありません。

独自のディレクティブを作成する必要がある状況は、通常、サードパーティの jQuery プラグインを使用する場合です。プラグインは AngularJS の外部でフォームの値を変更するため、すぐにモデルに反映することはできません。たとえば、私たちは jQueryUI datepicker プラグインを頻繁に使用します。日付を選択すると、プラグインは日付文字列を入力ボックスに入力します。 $('.datepicker').datepicker(); このコードは AngularJS の管理スコープに属していないため、ビューは変更されますが、モデルは更新されません。 DOM の変更をモデルに即時に更新するディレクティブを作成する必要があります。

var directives = angular.module('directives', []);
 
directives.directive('datepicker', function() {
   return function(scope, element, attrs) {
       element.datepicker({
           inline: true,
           dateFormat: 'dd.mm.yy',
           onSelect: function(dateText) {
               var modelPath = $(this).attr('ng-model');
               putObject(modelPath, scope, dateText);
               scope.$apply();
           }
       });
   }
});
ログイン後にコピー

次に、このディレクティブをHTMLに導入します

<input type="text" datepicker ng-model="myObject.myDateValue" />
ログイン後にコピー

ディレクティブは、プラグインの機能を実現し、HTMLの機能を効果的に補完するために、HTMLにカスタムタグの属性を記述することです。この宣言構文は HTML を拡張します。使用とコードのメンテナンスを容易にするために、プロジェクト内の共通関数とページ コンポーネントをディレクティブにカプセル化することをお勧めします。

Bootstrap フレームワークのプラグインや jQuery に基づくその他の一般的な UI コンポーネントなど、使用できる多数のディレクティブを提供する AngularUI プロジェクトがあることに注意してください。 AngularJS のコミュニティは現在活発であり、エコシステムは堅牢です。

ngOption

の値は大きな落とし穴です。 ngOption によって生成された