1. ما هو الفرق بين NG-Show/Ng-Hide و NG-IF؟
نعلم جميعًا ng-show/ng-hide مخفي بالفعل وعرضه من خلال display . و ng-if يتحكم بالفعل في إضافة وحذف عقد dom لتحقيق ذلك. لذلك ، إذا قمنا بتحميل عقدة dom وفقًا لظروف مختلفة ، فإن أداء ng-if أفضل من ng-show .
2. اشرح ما هو $ rootscrope و الفرق من نطاق $؟
بعبارات Layman ، فإن صفحة $rootScrope هي كل والد $scope .
دعونا نلقي نظرة على كيفية إنشاء $rootScope $scope .
Step1: Angular Parses ng-app ويقوم بإنشاء $rootScope في الذاكرة.
Step2: سوف يستمر Angular في التحليل ، والعثور على التعبير {{}} ، ويجعله في متغير.
الخطوة 3: سيتم بعد ذلك تحليل DIV مع ng-controller وإشارة إلى وظيفة controller . في هذا الوقت ، تصبح وظيفة controller مثيلًا لكائن $scope .
3. كيف يعمل التعبير {{yourmodel}}؟
ذلك يعتمد على خدمة $interpolation . بعد تهيئة الصفحة HTML ، ستجد هذه التعبيرات وتضع علامة عليها. لذلك في كل مرة تواجه فيها {{}} ، سيتم تعيين $watch . سيعيد $interpolation وظيفة مع معلمات السياق. أخيرًا ، يتم تنفيذ الوظيفة ، ويعتبر التعبير $parse لهذا النطاق.
4. ما هي دورة الهضم في الزاوي؟
في كل دورة digest ، سوف يقارن Angular دائمًا قيمة model في scope . بشكل عام ، يتم تشغيل دورة digest تلقائيًا ، ويمكننا أيضًا استخدام $apply للحصول على تشغيل يدوي.
5. كيفية إلغاء مهلة $ وإيقاف ساعة $؟)؟
توقف عن $timeout يمكننا استخدام cancel :
var customAteOut = $ timeout (function () {// your code} ، 1000) ؛ $ timeout.cancel (customtimeout) ؛توقف عن ساعة $:
//. $ watch () ستعيد وظيفة توقف عن وظيفة التسجيل التي نقوم بتخزينها إلى var deregisterwatchfn = $ rootscope. $ watch ('somegloballyavailableproperty' ، function (newVal) {if (newVal)6. كيف يمكنني ضبط التقييد في التوجيه الزاوي؟ ما هو الفرق بين @، = ، و النطاق؟
يمكن ضبط restrict بشكل منفصل:
سمة المباراة
علامة E TAG
ج فئة المباراة
م مطابقة التعليق
بالطبع يمكنك تعيين قيم متعددة مثل AEC لصنع مباريات متعددة.
في scope ، @، = ، ويتم التعبير عنه على التوالي عند إجراء ربط القيمة
@ الحصول على سلسلة تعيين ، والتي يمكن تعيينها بمفردها أو ربطها باستخدام {{yourModel}} ؛
= الربط ثنائي الاتجاه ، ربط بعض الخصائص في scope ؛
& يستخدم لتنفيذ بعض التعبيرات على scope الوالدين. وضعنا بعض الوظائف التي تحتاج إلى تنفيذ.
Angular.Module ('docsisoLationExample' ، []) .Controller ('controller' ، ['$ scope' ، function ($ scope) {$ scope.alertname = function () {alert ('encope &') ؛ } ، قالب: '<button ng click = "testClick ()"> انقر فوق لي </button> ، وحدة التحكم: الدالة ($ scope) {$ scope.testclick = function () {$ scope.clickhandle () ؛<div ng-app = "docsiSolationExample"> <div ng-controller = "controller"> <my-customer clickle = "alertname ()"> </my-customer> </viv> </viv>
<أداء في اتجاه واحد.
7. سرد ثلاث طرق على الأقل لتحقيق التواصل بين الوحدات النمطية المختلفة؟
1. الخدمة
2. الأحداث ، حدد الحدث المربوطة
3. استخدم $ rootscope
4. استخدم Walme $ ، $$ childhead ، وما إلى ذلك بين وحدات التحكم
5. التوجيه يحدد سمات ربط البيانات
8. ما هي التدابير التي يمكن أن تحسن الأداء الزاوي
موصى به رسميًا ، debug قرب ، $compileProvider
myapp.config (function ($ compileProvider) {$ compileProvider.debuginFoEnabled (false) ؛}) ؛ استخدم تعبيرًا واحدًا ، أي {{::yourModel}}
تقليل عدد المراقبين
تجنب استخدام ng-repeat في التحميل اللانهائي
استخدم أدوات اختبار الأداء لاستكشاف مشاكل الأداء الزاوي. يمكننا استخدام Simple console.time() أو استخدام أدوات المطور و Batarang
console.time ("timername") ؛ // codeconsole.timeend ("timername") ؛9. هل تعتقد أنه من الجيد استخدام jQuery في Angular؟
هذا سؤال مفتوح ، وعلى الرغم من وجود العديد من هذه المناقشات على الإنترنت ، يُعتقد عمومًا أن هذه ليست محاولة جيدة بشكل خاص. في الواقع ، عندما نتعلم الزاوية ، يجب أن نقبل فكرة الزاوي من 0 ، وربط البيانات ، واستخدام بعض واجهات برمجة التطبيقات التي تأتي معها ، وتوجيه بشكل معقول وتنظيم ، وكتابة التعليمات والخدمات ذات الصلة ، وما إلى ذلك. يأتي Angular مع العديد من واجهات برمجة التطبيقات التي يمكن أن تحل محل واجهات برمجة التطبيقات بشكل شائع في jQuery. يمكننا استخدام angular.element ، $ http ، $ timeout ، ng-init ، إلخ.
قد نغير أيضًا المنظور. إذا كانت هناك حاجة إلى احتياجات العمل ، وبالنسبة للوافد الجديد (أكثر دراية بـ jQuery) ، فربما يمكن أن تساعد مقدمة jQuery في حل المشكلات ، مثل استخدام المكونات الإضافية ، بالطبع ، هذا هو تحسين كفاءة العمل من خلال التأثير على تنظيم التعليمات البرمجية. مع تعميق فهم الزاوي ، بعض الرموز التي تم تقديمها عندما يتم التخلي عن jQuery تدريجياً أثناء إعادة الإعمار. (?po شخص مثل هذا
لذلك أعتقد أنه من الخطأ بالتأكيد القول إن الإطارين لا يمكن استخدامهما معًا على الإطلاق ، لكن لا يزال يتعين علينا بذل قصارى جهدنا لمتابعة التصميم الزاوي.
10. كيفية إجراء اختبارات الوحدة الزاوية
يمكننا استخدام كرام + ياسمين لاختبار الوحدة. نقدم التطبيق الزاوي من خلال ngmock ثم نضيف حالات الاختبار الخاصة بنا من قبل أنفسنا. رمز اختبار بسيط:
وصف ('calculator' ، function () {isheach (module ('cocalulative')) ؛ var $ controller ؛ inteach (enject (_ $ controller _) {$ controller = _ $ controller_ ؛})) ؛ وصف ('sum' ، function () {' $ Controller (Scope $ scope.11. ملخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون ذلك مفيدًا لدراسة الجميع والعمل. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لمناقشة.