1. В чем разница между NG-Show/NG-Hide и NG-IF?
Мы все знаем ng-show/ng-hide фактически скрыт и отображается через display . И ng-if фактически контролирует добавление и удаление узлов dom для его достижения. Поэтому, если мы загружаем узел dom в соответствии с различными условиями, то производительность ng-if лучше, чем ng-show .
2. Объясните, что такое $ rootscrope и какая разница в $ accope?
С точки зрения непрофессионала, страница $rootScrope - это отец $scope .
Давайте посмотрим, как генерировать $rootScope и $scope .
Шаг 1: Угловые основания ng-app и создают $rootScope в памяти.
Шаг 2: Angular будет продолжать анализировать, найти выражение {{}} и разобрать его в переменную.
Шаг 3: Div с ng-controller будет проанализирован и указывает на функцию controller . В настоящее время функция controller становится экземпляром объекта $scope .
3. Как работает выражение {{yourmodel}}?
Это зависит от услуги $interpolation . После инициализации страницы HTML он найдет эти выражения и отметит их. Таким образом, каждый раз, когда он сталкивается с {{}} , будут установлены $watch . $interpolation вернет функцию с параметрами контекста. Наконец, функция выполняется, и она считается $parse для этой области.
4. Что такое цикл дайджеста в угловой?
В каждом цикле digest цикла Angular всегда будет сравнивать значение model на scope . Как правило, цикл digest автоматически запускается, и мы также можем использовать $apply для ручного запуска.
5. Как отменить время -аут и остановить $ watch ()?
Stop $timeout Мы можем использовать cancel :
var CustomTimeOut = $ timeout (function () {// Ваш код}, 1000); $ timeout.cancel (customtimeout);Остановить $ watch:
//. $ watch () вернет функцию, которая останавливает функцию регистрации, которую мы храним для переменной var deRegisterwatchfn = $ rotscope. $ watch ('somegloballyavailableproperty', function (newval) {if (newval) {// мы вызовыте эту функцию Deregistration, чтобы отключить watch deregisterwatchfn ();6. Как я могу установить ограничение в угловой директиве? В чем разница между @, = и в области объема?
restrict может быть установлено отдельно:
Атрибут матча
E Match Tag
C Match Class
M Match Comment
Конечно, вы можете установить несколько значений, таких как AEC , чтобы сделать несколько совпадений.
В scope , @, =, и соответственно выражен при выполнении привязки к значению
@ Получить установленную строку, которая может быть установлена сама по себе или связана, используя {{yourModel}} ;
= Двунаправленное связывание, связывание некоторых свойств на scope ;
и используется для выполнения некоторых выражений на родительском scope . Мы установили некоторые функции, которые необходимо выполнить.
Angular.Module ('DocSisolationExample', []) .controller ('Controller', ['$ scope', function ($ scope) {$ scope.alertname = function () {alert ('Direct Scope &');}}]. Directive ('myCustomer', function () {return {return {returnct: 'raple:' raphope: 'raple:' raple: }, шаблон: '<кнопка ng-click = "testclick ()"> нажмите меня </button>', контроллер: функция ($ scope) {$ scope.testclick = function () {$ scope.clickhandle ();}}}};});<div ng-app = "docsisolationExample"> <div ng-controller = "controller"> <my-customer click-handle = "alertname ()"> </my-customer> </div> </div>
<Выполнить одностороннее переплет.
7. Перечислите как минимум три способа реализации связи между различными модулями?
1. Сервис
2. События укажите связанное событие
3. Используйте $ rootcope
4. напрямую используйте $ Parent, $$ holdhead и т. Д. Между контроллерами
5. Директива указывает атрибуты для привязки данных
8. Какие меры могут улучшить угловые показатели
Официально рекомендуется, близкая debug , $compileProvider
myApp.config (function ($ compileprovider) {$ compileprovider.debuginfoenabled (false);}); Используйте одно привязанное выражение, то есть {{::yourModel}}
Уменьшить количество наблюдателей
Избегайте использования ng-repeat в бесконечной нагрузке прокрутки
Используйте гаджеты тестирования производительности для изучения ваших проблем с угловой производительностью. Мы можем использовать Simple console.time() или использовать инструменты разработчика и Batarang
Console.Time ("Timername"); // your codeconsole.timeend ("timername");9. Как вы думаете, хорошо использовать jQuery в угловой?
Это открытый вопрос, и хотя в Интернете много таких дебатов, обычно считается, что это не особенно хорошая попытка. Фактически, когда мы учимся угловой, мы должны принять идею углового от 0, привязки данных, использовать некоторые из API, которые Angular поставляются, разумно маршрут и организуют, написать связанные инструкции и услуги и т. Д. Угловые поставляются со многими API, которые могут полностью заменить широко используемые API в jQuery. Мы можем использовать Angular.Element, $ http, $ timeout, ng-init и т. Д.
Мы могли бы также изменить перспективу. Если необходимо бизнес, и для новичка (более знакомого с JQUERY), возможно, ваше введение JQUERY может помочь ему решить проблемы, такие как использование плагинов, конечно, это для повышения эффективности работы, затронув организацию кода. С углубленным пониманием углового, некоторые коды, которые были введены, когда jQuery будет постепенно заброшен во время реконструкции. (?po такой человек. Я надеюсь, что вы не будете высмеивать, но бизнес уезжает)
Поэтому я думаю, что это определенно неправильно говорить, что две рамки не могут быть использованы вместе вообще, но мы все равно должны стараться изо всех сил следовать угловым дизайну.
10. Как провести угловые модульные тесты
Мы можем использовать karam + jasmine для модульного тестирования. Мы вводим угловое приложение через NGMOCK, а затем сами добавляем наши тестовые примеры. Простой тестовый код:
Опишите ('Calculator', function () {ofeeach (module ('CalculatorApp')); var $ controller; inject (inject (function (_ $ controller _) {$ controller = _ $ controller_;})); описать ('sum', function () {it ('1 + 1 должен равняться 2', funct $ controller (Calculatorsconter ', {$ recope: $11. Резюме
Вышеуказанное - все содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения и работы. Если у вас есть какие -либо вопросы, пожалуйста, оставьте сообщение для обсуждения.