Методы модулей

var app = angular.module('myModule', []);

config

app.config(function)

Конфигурирует модуль

app.config(function($routeProvider){
    $routeProvider
        .otherwise({redirectTo: '/'})
});

constant

app.constant(key, value)

Объявляет константу модуля

app.constant('CONST', 123);

controller

app.controller(name, constructor)

Объявляет контроллер в модуле

app.controller(
    'myController',
    function(){
        ...
    }
)

directive

app.directive(name, constructor)

Объявляет директиву в модуле.

Обработчик может вернуть объект со следующими свойствами, или просто какойто обработчик

  • compile - метод(либо ссылка на метод) с инструкциями по компиляции шаблона

    Функция компиляции compile (используется довольно редко) трансформирует HTML шаблон.

    Функция принимает следующие аргументы:

    • шаблон элемента

    • шаблон атрибутов

    • связывающая функция

    Функция может возвращать функцию или объект.

  • controller - метод (либо ссылка на метод) где описано поведение(логика)

    Необходима в случае, когда логика директивы выходит за пределы одного метода и нам уже необходимма группа методов.

    Такую группу методов мы можем объединить в функцию-контроллер.

    Это будет специальный тип контроллера “связанный с директивой”, которые должен взаимодействать только с данной директивой.

  • link - основной параметр фабрики – метод(либо ссылка на метод) по связыванию директивы с приложением

    После компиляции функция линковки link регистрирует обработчики событий на DOM обновленного HTML.

    метод принимает следующие атрибуты:

    • scope

    • element

    • attrs

    • ctrl

    • transclude - функция для трансклуда

      transclude(scope, function(clone, scope){
          // scope - скоуп клинируемого элемента
          // если не хочется использовать transclude: true,
          element.append(clone);
      });
      
  • name – имя текущей области видимости (scope).

    Не обязательный и по умолчанию это имя заданное при регистрации директивы.

  • priority - приоритет выполнения, для случая когда на одном элементе несколько директив

  • replace

    • true – шаблон директивы заменит элемент

    • false – произойдет append

  • restrict - задает способ встраивания

    • E - тэг(имя элемента)

    • A - атрибут

    • C - класс

    • M - комментарий

  • require - требовать от других контроллеров передавать в текущую директиву связывающую функцию.

  • scope - Определяет способ передачи scope в директиву

    В зависимости от типа переданного параметра ведёт себя по разному:

    • true – создается новый scope конкретно для этой директивы

    • {} - задается конкретный изолированный scope – т.е. scope не унаследованный от родительского

      Может влючать в себе ссылки на элементы родительского scope при использоварнии нетривиального синтаксиса (специальный префикс символ (@, =, & ) перед имеем метода/переменой)

      • @ или @attr – связывает переменную локального scope со значением DOM аттрибута

      • = или =attr – двустороннее связывание значения атрибута и переменной

      • & или &attr– позволяет выполнять выражения из аттрибута в рамках родительского scope

    • false - используется scope ближайшего контроллера (default)

  • template - шаблон HTML

  • templateUrl - ссылка на файл шаблона

  • terminal

    • true - текущий приоритет будет установлен на последующие директивы

  • transclude - компилирует контент элемента и делает возможные его вставку внутрь шаблона (по средством ngTransclude )

    • true - не потерять содержимое директивы

    • ‘element’

// простая директива
app.directive(
    'pane',
    function(){
        return function(){
            ...
        }
    }
);

// директива с настройками
app.directive(
    'pane',
    function(){
        return {
            restrict: 'E',
            transclude: true,
            scope: {
                title:'@'
            },
            template: '<div style="border: 1px solid black;">' +
                      '<div style="background-color: gray">{{title}}</div>' +
                      '<div ng-transclude></div>' +
                      '</div>',
            link: function(scope, element, attrs, ctrl, transclude){

            }
        };
    };
});

factory

app.factory(name, providerFunction)

Фабрика

app.factory(
    'some_factory',
    function(){
        return {
            some_var: 'some_var_description'
        }
    });

filter

app.filter(name, constructor)
app.filter(
    'first_filter',
    function(){
        return function(value){
            return '2,' + value;
        };
})

name

name

Имя модуля

provider

app.provider(name, constructor)

run

app.run()
app.run(function($rootScope){
    // эта штука иногда перехвататывает ошибки,
    // которые не отображаются в консоли
    $rootScope.$on('$stateChangeError', function(){
        throw arguments[5];
    });
    ...
});

requires

requires

Зависимости модуля

service

service(name, constructor)

value

app.value(key, value)

Объявляет переменную в модуле