Aqui está uma diretiva de script de café básica para Angular JS para combinar a altura da janela de qualquer objeto com o atributo ‘match-window-height’
app.directive 'matchWindowHeight', ($timeout, $window) ->
(scope, el, attrs) ->
setHeight = () ->
el.css("height", $window.innerHeight+"px")
setHeight()
$timeout ->
setHeight()
angular.element($window).on "resize", setHeight
cleanup = ->
angular.element($window).off "resize", setHeight
el.on '$destroy', cleanup
Aqui está o tl; dr
Para percorrer o que está acontecendo, este código procura por objetos no DOM que tenham o valor de atributo (ou suponho que também o nome da classe) ‘match-window-height’.
app.directive 'matchWindowHeight', ($timeout, $window) ->
Isso é típico porque o Angular pega o nome do caso do camelo da diretiva definida na primeira linha e o lê em uma string delimitada por traços. Passamos $ timeout e $ window para o construtor como dependências porque os usaremos posteriormente na diretiva.
(scope, el, attrs) ->
O construtor retorna uma função que tem o escopo , el ‘e attrs, que são apenas nomes convencionais que você pode chamar de a, b, c ou qualquer outro, mas os três parâmetros disponíveis serão o escopo, o elemento e os atributos do elemento DOM visados pela directiva.
setHeight = () ->
el.css("height", $window.innerHeight+"px")
Nossa função setHeight usa a implementação do elemento Angulars de jqLite para anexar a altura da propriedade de estilo com um valor retornado por $ window.innerHeight , apelido interno do Angular para window.innerHeight .
Em seguida, executamos setHeight quando a diretiva corresponde pela primeira vez
setHeight()
e dentro de um $ timeout porque a renderização do DOM pode acontecer de forma assíncrona em alguns casos extremos
$timeout ->
setHeight()
e vinculamos setHeight ao evento de redimensionamento do serviço $ window .
angular.element($window).on "resize", setHeight
Criamos uma função de limpeza porque queremos remover os ouvintes quando o elemento for destruído.
cleanup = ->
angular.element($window).off "resize", setHeight
el.on '$destroy', cleanup