1. Qual é a diferença entre ng-show/ng-hide e ng-if?
Todos sabemos ng-show/ng-hide está realmente oculto e exibido através display . E ng-if realmente controla a adição e a exclusão dos nós dom para alcançá-lo. Portanto, se carregarmos dom de acordo com diferentes condições, o desempenho do ng-if é melhor que ng-show .
2. Explique o que é $ RootsCrope e a diferença de $ SCOPE?
Em termos leigos, a página de $rootScrope é todo o pai de $scope .
Vamos dar uma olhada em como gerar $rootScope e $scope .
Etapa 1: Angular Pareses ng-app e cria $rootScope na memória.
Etapa2: Angular continuará a analisar, encontrar a expressão {{}} e analisá -la em uma variável.
Etapa 3: O DIV com ng-controller será analisado e apontado para uma função controller . Neste momento, controller se torna uma instância do objeto $scope .
3. Como funciona a expressão {{yourmodel}}?
Depende do serviço $interpolation . Depois de inicializar a página HTML, ela encontrará essas expressões e as marcará. Então, toda vez que encontra um {{}} , um $watch será definido. $interpolation retornará uma função com parâmetros de contexto. Finalmente, a função é executada e é considerada a expressão $parse nesse escopo.
4. Qual é o ciclo de digestão em Angular?
Em cada ciclo digest , o Angular sempre comparará o valor do model no scope . Geralmente, digest é acionado automaticamente e também podemos usar $apply para o acionamento manual.
5. Como cancelar o Timeout $ e parar um $ watch ()?
Pare de $timeout podemos usar cancel :
var customTimeout = $ timeout (function () {// seu código}, 1000); $ timeout.cancel (customTimeout);Pare um $ relógio:
//
6. Como posso definir a restrição na diretiva angular? Qual é a diferença entre @, =, & in scope?
restrict pode ser definido separadamente:
Um atributo de partida
E tag de correspondência
C Classe de correspondência
M Comentário de Match
É claro que você pode definir vários valores, como AEC , para fazer várias correspondências.
Em scope , @, =, & é respectivamente expresso ao executar a ligação de valor
@ Get uma string set, que pode ser definida por si mesma ou ligada usando {{yourModel}} ;
= Ligação bidirecional, ligando algumas propriedades no scope ;
& é usado para executar algumas expressões no scope dos pais. Definimos algumas funções que precisam ser executadas.
angular.module ('docsisisolationExample', []) .Controller ('controlador', ['$ scope', função ($ scope) {$ scope.alertName = function () {alert ('scope direto &');}}). }.<div ng-App = "docsisolationExample"> <div ng --Controller = "Controller"> <My-Customer click-handle = "alertName ()"> </my-customer> </div> </div>
<Faça uma ligação unidirecional.
7. Liste pelo menos três maneiras de realizar a comunicação entre diferentes módulos?
1. Serviço
2 eventos, especifique o evento vinculado
3. Use $ Rootscope
4. Use diretamente $ pai, $$ Childhead, etc. entre controladores
5. A diretiva especifica atributos para a ligação de dados
8. O que as medidas podem melhorar o desempenho angular
Oficialmente recomendado, debug fechada, $compileProvider
myApp.config (função ($ compileProvider) {$ compileProvider.debuginfoEnabled (false);}); Use uma expressão de ligação, isto é {{::yourModel}}
Reduza o número de observadores
Evite usar ng-repeat em carga de rolagem infinita
Use gadgets de teste de desempenho para explorar seus problemas de desempenho angular. Podemos usar o simples console.time() ou usar ferramentas de desenvolvedor e Batarang
console.Time ("Nome do Timern"); // seu codeconsole.TimeEnd ("Timername");9. Você acha bom usar o jQuery no Angular?
Essa é uma questão em aberto e, embora existam muitos desses debates na Internet, geralmente acredita -se que essa não seja uma tentativa particularmente boa. De fato, quando aprendemos angular, devemos aceitar a idéia de angular de 0, a ligação de dados, usar algumas das APIs que o Angular vem, rota e organizar razoavelmente, escrever instruções e serviços relacionados, etc. Angular vem com muitas APIs que podem substituir completamente as APIs comumente usadas no jQuery. Podemos usar o Angular.Element, $ http, $ timeout, ng-init, etc.
Também podemos mudar a perspectiva. Se as necessidades de negócios forem necessárias e, para um recém-chegado (mais familiarizado com o jQuery), talvez sua introdução do jQuery possa ajudá-lo a resolver problemas, como o uso de plug-ins, é claro, isso é para melhorar a eficiência do trabalho, afetando a organização do código. Com o aprofundamento do entendimento do angular, alguns dos códigos que foram introduzidos quando o jQuery serão gradualmente abandonados durante a reconstrução. (?po é uma pessoa tão
Então, acho que é definitivamente errado dizer que as duas estruturas não podem ser usadas juntas, mas ainda devemos tentar o nosso melhor para seguir o design angular.
10. Como realizar testes de unidade angular
Podemos usar Karam + Jasmine para testes de unidade. Introduzimos o aplicativo angular através do NGMOCK e depois adicionamos nossos casos de teste sozinhos. Um código de teste simples:
descreva ('calculadora', function () {antes e cada vez ('calculatepp')); var $ controlador; antes each (injeção (function (_ $ controlador _) {$ controller = _ $ controller_;}); descrever ('sum', function () {it ('1 + 1 deve ser igual 2', function () {var $ sconect = sum ', function () {it (' 1 + 1} $ Controller ('calculador, {$ SCOPE: $ SCOPE});11. Resumo
O acima é o conteúdo inteiro deste artigo. Espero que seja útil para estudar e trabalhar de todos. Se você tiver alguma dúvida, deixe uma mensagem para discutir.