ホームページ ウェブフロントエンド jsチュートリアル AngularJS構文の詳しい説明(続き)_AngularJS

AngularJS構文の詳しい説明(続き)_AngularJS

May 16, 2016 pm 04:18 PM
angularjs 文法

src 属性と href 属性

Angularjs では、src は ng-src として記述し、href は ng-href として記述する必要があります。例:

コードをコピーします コードは次のとおりです:

テンプレートでは、単純な数学演算、比較演算、ブール演算、ビット単位の演算、参照配列、オブジェクト表記などを実行できます。ただし、式はカスタム インタプリタを使用して実行されます。 Angular の) を使用する代わりに Javascript の eval() 関数を使用するため、より大きな制限があります。
ここでの式は多くの点で Javascript よりも厳密ですが、エラーが発生した場合、テンプレートは NullPointerException エラーをスローするのではなく、単純に何も表示しません。 例:

コードをコピーします コードは次のとおりです:


{{computer() /10 }}
//これは合法ですが、このアプローチは避けるべきです。

UI とコントローラーの責任を分離します

コントローラーは特定の DOM フラグメントにバインドされており、これらのフラグメントはコントローラーが管理する必要があるコンテンツです。コントローラーを DOM ノードに関連付けるには、主に 2 つの方法があります。1 つは、ng-controller を介してテンプレート内で宣言する方法です。2 つ目は、ルーティングを介して動的にロードされる DOM テンプレート フラグメントにコントローラーをバインドする方法です。 ネストされたコントローラーを作成でき、継承構造を通じてデータ モデルと関数を共有できます。実際のネストは、内部のプリミティブ継承メカニズムを通じて、親コントローラー オブジェクトの $scope が内部のネストされた $ に渡されます。スコープ (関数を含むすべてのプロパティ)。例:

コードをコピーします コードは次のとおりです:


...


$scope を使用してモデル データを公開します

$scope プロパティを明示的に作成できます (例: $scope.count = 5)。テンプレート自体を介して間接的にデータ モデルを作成することもできます。

表現による。たとえば

コードをコピーします コードは次のとおりです:


フォーム項目で ng-model を使用する

式と同様に、ng-model で指定されたモデル パラメーターは外部コントローラーでも機能します。唯一の違いは、フォーム項目と指定されたモデルの間に双方向のバインディングが作成されることです。

ウォッチを使用してデータ モデルの変更を監視します

$watch の関数シグネチャは次のとおりです: $watch(watchFn,watchAction,deepWatch)
watchFn は、監視対象のデータ モデルの現在の値を返す Angular 式または関数を含む文字列です。 watchAction は、watchFn が変更されたときに呼び出される関数または式です。その関数シグネチャは次のとおりです:
function(newValue,oldValue,scope) deepWatch true に設定すると、このオプションのブール型パラメーターは、監視対象オブジェクトの各プロパティが変更されたかどうかを確認するように Angular に指示します。単一の値を監視するのではなく、配列内の要素、またはオブジェクトのすべてのプロパティを監視する場合は、このパラメーターを使用できます。 Angular は配列またはオブジェクトを走査する必要があるので、コレクションが大きい場合、操作が複雑で重くなることに注意してください。

$watch 関数は関数を返します。変更通知を受け取る必要がない場合は、この返された関数を使用してモニターからログアウトできます。
プロパティを監視して監視からログアウトする必要がある場合は、次のコードを使用できます: var dereg = $scope.$watch('someModel.someProperty',callbackOnChange());
... dereg();

コード例は次のとおりです:

コードをコピー コードは次のとおりです:


<頭>
    ショッピングカート
    <スクリプトタイプ="text/javascript">
        function CartController($scope) {
            $scope.bill = {};
            $scope.items = [
                {タイトル:「ペイントポット」、数量:8、価格:3.95}、
                {タイトル:「水玉模様」、数量:17、価格:12.95}、
                {タイトル:「小石」、数量:5、価格:6.95}
            ];
            $scope.totalCart = function() {
                var total = 0;
                for (var i=0,len=$scope.items.length;i                     total = 合計 $scope.items[i].price * $scope.items[i].quantity;
                }
                合計を返します;
            }
            $scope.subtotal = function() {
                return $scope.totalCart() - $scope.bill.discount;
            }
            function CalculateDiscount(newValue,oldValue,scope) {
                $scope.bill.discount = newValue > 100? 10:0;
            }//ここのwatchAction関数数
            $scope.$watch($scope.totalCart,calculateDiscount);//ここのwatch関数数
        }
   


   

       

            {{item.title}}
           
            {{商品.価格 |通貨}}
            {{商品.価格 * 商品.数量 |通貨}}
       

       
合計: {{totalCart()|通貨 }}

       
割引: {{bill.discount |通貨}}

       
小計: {{小計() |通貨}}

   

   


上のウォッチにはパフォーマンスの問題があるため、calculateTotals 関数が 6 回実行され、そのうち 3 回は循環するたびに都市がデータを再汚染しているためです。 以下は改良後の代コード

复制代码代码如下:


<頭>
    ショッピングカート
    <スクリプトタイプ="text/javascript">
        function CartController($scope) {
            $scope.bill = {};
            $scope.items = [
                {タイトル:「ペイントポット」、数量:8、価格:3.95}、
                {タイトル:「水玉模様」、数量:17、価格:12.95}、
                {タイトル:「小石」、数量:5、価格:6.95}
            ];
            var totalCart = function() {
                var total = 0;
                for (var i=0,len=$scope.items.length;i                     total = 合計 $scope.items[i].price * $scope.items[i].quantity;
                }
                $scope.bill.totalcart = 合計;
                $scope.bill.discount = 合計 > 100? 10:0;
                $scope.bill.subtotal = 合計 - $scope.bill.discount;
            }
            $scope.$watch('items',totalCart,true);//ただ着ているアイテムの変更
        }
   


   

       

            {{item.title}}
           
            {{商品.価格 |通貨}}
            {{商品.価格 * 商品.数量 |通貨}}
       

       
合計: {{bill.totalcart|通貨 }}

       
割引: {{bill.discount |通貨}}

       
小計: {{bill.subtotal |通貨}}

   

   


Angular 表示画面で毎回、combill プロパティを更新するだけであれば、非常に大きな ITMS 数の場合にパフォーマンスが向上する可能性があります。watchFn の $watch 関数を使用してバンドルを作成することで、これを実現できます。 >

复制代码代码如下:

$scope.$watch(
var totalCart = function() {
var total = 0;
for (var i=0,len=$scope.items.length;i total = 合計 $scope.items[i].price * $scope.items[i].quantity;
}
$scope.bill.totalcart = 合計;
$scope.bill.discount = 合計 > 10 :0;
$scope.bill.subtotal = 合計 - $scope.bill.discount;
});

複数のものを監視する

複数のプロパティまたはオブジェクトを監視し、それらのいずれかが変更されたときに関数を実行する場合、2 つの基本的なオプションがあります。

これらのプロパティを連結した値を監視します

それらを配列またはオブジェクトに入れて、deepWatch パラメーターに値を渡します

それぞれの手順:
最初のケースでは、スコープ内に Things オブジェクトがある場合、そのオブジェクトには 2 つのプロパティ a と b があり、これら 2 つのプロパティが変更されると、callMe() 関数を実行する必要があります。これらの 2 つのプロパティを同時に監視できます。 $scope.$watch('things.a things.b',callMe(...));
リストが非常に長い場合は、連結された値を返す関数を作成する必要があります。

2 番目のケースでは、オブジェクトのすべてのプロパティを監視する必要があります。これを行うことができます。

コードをコピーします コードは次のとおりです:

$scope.$watch('things',callMe(...),true);

モジュールを使用して依存関係を整理する

provider(name,Object ORconstructor()) 説明: 複雑なロジック比較を作成する構成可能なサービス。オブジェクトをパラメータとして渡す場合、そのオブジェクト オブジェクトには、サービスの名前を返す必要がある $get という名前の関数が必要です。それ以外の場合、angularjs は渡されたものがコンストラクターであると認識し、コンストラクターを呼び出すとサービス インスタンス オブジェクトが返されます。
Factory(name,$get Function()) 説明: 構成不可能なサービスであり、作成ロジックは比較的複雑です。呼び出されたときにサービス インスタンスを返す関数を指定する必要があります。これは、provider(name,{$get:$getFunction()}) として表示されます。
service(name,constructor()) 構成不可能なサービスであり、ロジックの作成は比較的簡単です。上記のプロバイダー関数のコンストラクター パラメーターと同様に、Angular はサービス インスタンスを呼び出すことでサービス インスタンスを作成できます。

モジュールファクトリーの使用例

コードをコピー コードは次のとおりです:


<頭>
ショッピングカート

<スクリプトタイプ="text/javascript">
    var ShoppingModule = angular.module('ShoppingModule',[]);
    ShoppingModule.factory('アイテム',function() {
        var items = {};
        items.query = function() {
            戻る [
                {title:'ペイント ポット',description:'ペイントでいっぱいのポット',price:3.95},
                {title:'ペイント ポット',description:'ペイントでいっぱいのポット',price:3.95},
                {title:'ペイント ポット',description:'ペイントでいっぱいのポット',price:3.95}
            ];
        };
        返品アイテム;
    });
    function ShoppingController($scope,Items) {
        $scope.items = Items.query();
    }



ショップ!!


<表>
   
        {{item.title}}
        {{item.description}}
        {{商品.価格 |通貨}}
   



導入第三方模块

ほとんどのアプリケーションでは、すべてのコードを使用する単一のモジュールを構築し、すべての依存するトラフィックをそのモジュールに入れると、サードパーティのパケットを使用して提供されるサービスがうまく動作します。または、コマンドは、通常、自分のモジュールを持っており、アプリケーションモジュール内で参照できないようにする必要があります。 var appMod = angular.module('app',['Snazzy','Super']);

フィルターに関する例

复制代 代码如下:

<頭>
ショッピングカート

<スクリプトタイプ="text/javascript">
    var ShoppingModule = angular.module('ShoppingModule',[]);
    ShoppingModule.filter('titleCase',function() {
        var titleCaseFilter = function(input) {
            var word = input.split(' ');
            for(var i=0;i                 単語[i] = 単語[0].charAt(0).toUpperCase() 単語[i].slice(1);
            }
            return Words.join(' ');
        };
        titleCaseFilter を返す;
    });
    function ShoppingController($scope) {
        $scope.pageHeading = 'これはテスト ケースです';
    }



{{ページ見出し | titleCase}}





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

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python コードをすばやく API に変換する方法 Python コードをすばやく API に変換する方法 Apr 14, 2023 pm 06:28 PM

API 開発といえば、DjangoRESTFramework、Flask、FastAPI を思い浮かべるかもしれません。はい、これらを使用して API を作成できます。しかし、今日共有されたフレームワークを使用すると、既存の関数をより速く API に変換できます。それが Sanic です。 Sanic の概要 Sanic[1] は、パフォーマンスを向上させるために設計された Python3.7 以降の Web サーバーおよび Web フレームワークです。これにより、Python 3.5 で追加された async/await 構文を使用できるようになり、ブロックを効果的に回避し、応答速度を向上させることができます。 Sanic は、簡単かつ迅速に作成して起動する方法を提供することに尽力しています。

PHP8.0 の新しい型エイリアス構文 PHP8.0 の新しい型エイリアス構文 May 14, 2023 pm 02:21 PM

PHP 8.0 のリリースでは、新しい型のエイリアス構文が追加され、カスタム型の使用が容易になりました。この記事では、この新しい構文とそれが開発者に与える影響について詳しく見ていきます。型エイリアスとは何ですか? PHP では、型エイリアスは基本的に、別の型の名前を参照する変数です。この変数は他の型と同様に使用でき、コード内の任意の場所で宣言できます。この構文の主な機能は、一般的に使用される型のカスタム エイリアスを定義して、コードを読みやすく理解しやすくすることです。

入門から習得まで、2022 年の最新 5 つの angularjs チュートリアル 入門から習得まで、2022 年の最新 5 つの angularjs チュートリアル Jun 15, 2017 pm 05:50 PM

Javascript は、コードの構成、コードのプログラミング パラダイム、およびオブジェクト指向理論の点で非常にユニークな言語です。しかし、JavaScript が 20 年間主流であったとはいえ、jQuery、Angularjs、さらには React などの人気のあるフレームワークを理解したい場合は、「Black Horse Cloud Classroom JavaScript Advanced Framework」を見てください。デザインビデオチュートリアル」。

ラムダ式の構文と構造の特徴は何ですか? ラムダ式の構文と構造の特徴は何ですか? Apr 25, 2024 pm 01:12 PM

ラムダ式は名前のない匿名関数であり、その構文は (parameter_list)->expression です。匿名性、多様性、カリー化、閉鎖性が特徴です。実際のアプリケーションでは、ラムダ式を使用して、合計関数 sum_lambda=lambdax,y:x+y などの関数を簡潔に定義し、map() 関数をリストに適用して合計演算を実行できます。

Go言語とJSの関係と違い Go言語とJSの関係と違い Mar 29, 2024 am 11:15 AM

Go 言語と JS の関係と違い Go 言語 (Golang とも呼ばれます) と JavaScript (JS) は現在人気のあるプログラミング言語であり、これらはある面では関連していますが、他の面では明らかな違いがあります。この記事では、Go 言語と JavaScript の関係と違いを探り、読者がこれら 2 つのプログラミング言語をよりよく理解できるように具体的なコード例を示します。接続: Go 言語と JavaScript は両方ともクロスプラットフォームであり、異なるオペレーティング システム上で実行できます。

PHP と AngularJS を使用して応答性の高い Web サイトを構築し、高品質のユーザー エクスペリエンスを提供します PHP と AngularJS を使用して応答性の高い Web サイトを構築し、高品質のユーザー エクスペリエンスを提供します Jun 27, 2023 pm 07:37 PM

今日の情報化時代において、ウェブサイトは人々が情報を入手し、コミュニケーションを図るための重要なツールとなっています。レスポンシブな Web サイトはさまざまなデバイスに適応し、ユーザーに高品質のエクスペリエンスを提供できます。これは、現代の Web サイト開発のホットスポットとなっています。この記事では、PHP と AngularJS を使用して応答性の高い Web サイトを構築し、高品質のユーザー エクスペリエンスを提供する方法を紹介します。 PHP の概要 PHP は、Web 開発に最適なオープンソースのサーバー側プログラミング言語です。 PHP には、学びやすさ、クロスプラットフォーム、豊富なツール ライブラリ、開発効率など、多くの利点があります。

PHP と AngularJS を使用して Web アプリケーションを構築する PHP と AngularJS を使用して Web アプリケーションを構築する May 27, 2023 pm 08:10 PM

インターネットの継続的な発展に伴い、Web アプリケーションは企業情報構築の重要な部分となり、最新化作業に必要な手段となりました。 Web アプリケーションの開発、保守、拡張を容易にするために、開発者は開発ニーズに合った技術フレームワークとプログラミング言語を選択する必要があります。 PHP と AngularJS は非常に人気のある 2 つの Web 開発テクノロジであり、それぞれサーバー側とクライアント側のソリューションであり、これらを組み合わせて使用​​すると、Web アプリケーションの開発効率とユーザー エクスペリエンスを大幅に向上させることができます。 PHPPHPの利点

PHP8.0の親クラス呼び出し構文 PHP8.0の親クラス呼び出し構文 May 14, 2023 pm 01:00 PM

PHP は Web 開発で広く使用されているサーバー側スクリプト言語であり、PHP8.0 バージョンでは、オブジェクト指向プログラミングをより便利かつ簡潔にするための新しい親クラス呼び出し構文が導入されています。 PHP では、継承を通じて親クラスと 1 つ以上のサブクラスを作成できます。サブクラスは親クラスのプロパティとメソッドを継承でき、親クラスのメソッドをオーバーライドすることで機能を変更または拡張できます。通常のPHPの継承では、サブクラス内で親クラスのメソッドを呼び出したい場合は、parentキーワードを使用して親を参照する必要があります。

See all articles