1. Ng-show/ng-hideとng-ifの違いは何ですか?
ng-show/ng-hideが実際に隠されてdisplayされていることを知っています。そして、 ng-if 、実際にそれを達成するためにdomノードの追加と削除を制御します。したがって、異なる条件に応じてdomノードをロードすると、 ng-ifのパフォーマンスはng-showよりも優れています。
2. $ Rootscropeと$ Scopeとの違いを説明してください。
素人の用語では、 $rootScropeページはすべて$scopeの父親です。
$rootScopeと$scopeを生成する方法を見てみましょう。
ステップ1:Angularはng-appを分割し、メモリに$rootScopeを作成します。
ステップ2:Angularは解析を続け、 {{}}式を見つけ、それを変数に解析します。
ステップ3:その後、 ng-controllerを備えたDIVは解析され、 controller機能を指します。この時点で、 controller関数は$scopeオブジェクトのインスタンスになります。
3。式{{yourmodel}}はどのように機能しますか?
$interpolationサービスに依存します。ページHTMLを初期化した後、これらの式を見つけてマークします。したがって、 {{}}に遭遇するたびに、 $watch設定されます。 $interpolation 、コンテキストパラメーターを使用して関数を返します。最後に、関数が実行され、その範囲に対する式$parseと見なされます。
4. Angularの消化サイクルは何ですか?
各digestサイクルでは、Angularは常にscope上のmodelの値を比較します。一般に、 digestサイクルは自動的にトリガーされ、手動トリガーに$apply使用することもできます。
5. $タイムアウトをキャンセルして$ watch()を停止する方法は?
$timeoutを停止します。 cancelを使用できます。
var customtimeout = $ timeout(function(){// code}、1000); $ timeout.cancel(customtimeout);$時計を止めてください:
//。$ watch()は、変数var deregisterwatchfn = $ rotscopeに保存する登録関数を停止する関数を返します。
6. Angular Directiveに制限を設定するにはどうすればよいですか? @、=、&scopeの違いは何ですか?
restrict個別に設定できます。
一致属性
Eマッチタグ
C一致クラス
mマッチコメント
もちろん、 AECなどの複数の値を設定して複数の一致を作成できます。
scopeで、 @、=、&&はそれぞれ値バインディングを実行するときに表現されます
@セット文字列を取得します。これは{{yourModel}}を使用して、単独で設定したり、バインドできます。
=双方向の結合、 scope上のいくつかの特性を結合する。
&は、親のscopeでいくつかの式を実行するために使用されます。実行する必要があるいくつかの機能を設定します。
angular.module( 'docsisolationexample'、[]).controller( 'controller'、['$ scope'、function($ scope){$ scope.alertname = function(){alert( 'direct scope&');}}))))))))) }、テンプレート: '<button ng-click = "testclick()"> click me </button>'、function($ scope){$ scope.testclick = function(){$ scope.clickhandle()}};});<div ng-app = "docsisolationexample"> <div ng-controller = "controller"> <my-customer click handle = "alertname()"> </my-customer> </div> </div>
<一方向の結合を実行します。
7.異なるモジュール間の通信を実現するための少なくとも3つの方法をリストしますか?
1。サービス
2。イベント、バウンドイベントを指定します
3. $ rotscopeを使用します
4。コントローラー間で$親、$$ CHILDHEADなどを直接使用します
5。ディレクティブは、データバインディングの属性を指定します
8。角度性能を改善できる測定値
正式に推奨されている、閉じるdebug 、 $compileProvider
myapp.config(function($ compileprovider){$ compileprovider.debuginfoenabled(false);}); 1つの結合式、つまり{{::yourModel}}を使用します
ウォッチャーの数を減らします
無限のスクロール荷重でng-repeatを使用しないでください
パフォーマンステストガジェットを使用して、角張ったパフォーマンスの問題を調査します。 Simple console.time()を使用したり、開発者ツールとBatarangを使用したりできます
Console.Time( "TimerName"); // CodeConsole.TimeEnd( "TimerName");
9。角度でjqueryを使用するのは良いことだと思いますか?
これは未解決の質問であり、インターネット上にはそのような議論がたくさんありますが、一般的にこれは特に良い試みではないと考えられています。実際、Angularを学習する場合、Angularのアイデアを0から受け入れ、データバインディングを受け、Angularが付属しているAPIの一部を使用し、合理的にルートと整理、関連する指示やサービスなどを作成します。Angularには、JQUERYで一般的に使用されるAPIを完全に置き換えることができる多くのAPIが付属しています。 Angular.Element、$ http、$ Timeout、ng-initなどを使用できます。
視点を変えることもできます。ビジネスのニーズが必要であり、新人(jQueryに精通している)の場合、おそらくJQueryの導入は、プラグインの使用などの問題を解決するのに役立つ可能性があります。もちろん、これはコード組織に影響を与えることで作業効率を改善することです。 Angularの理解の深化により、jQueryが再建中に徐々に放棄されるときに導入されたコードの一部。 (poはそのような人です。あなたがrid笑されないことを願っていますが、ビジネスは追い払われます)
ですから、2つのフレームワークをまったく一緒に使用できないと言うのは間違いなく間違っていると思いますが、Angularデザインに従うために最善を尽くす必要があります。
10。角度単位テストを実施する方法
ユニットテストにはKaram + Jasmineを使用できます。 Ngmockを介してAngularアプリを紹介し、自分でテストケースを追加します。簡単なテストコード:
説明( 'calculature'、function(){beforeeach(module( 'calculatureApp')); var $ controller; beforeeach(indect(_ $ controller _){$ controller = _ $ controller_;}); $ CalculationController '、$ scope.y = $ 2;11。概要
上記は、この記事のコンテンツ全体です。みんなの勉強や仕事に役立つことを願っています。ご質問がある場合は、メッセージを残して話し合ってください。