Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| java-script:angularjs:lessons [2016/01/09 13:25] – [Директивы] mirocow | java-script:angularjs:lessons [Дата неизвестна] (текущий) – внешнее изменение (Дата неизвестна) 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| {{tag> | {{tag> | ||
| - | ====== Angular.JS ====== | + | ====== Angular.JS |
| MVC - Java-Script это | MVC - Java-Script это | ||
| Строка 7: | Строка 7: | ||
| ====== APP / Modules ====== | ====== APP / Modules ====== | ||
| - | * Module - Базовый контейнер для app включает в себя controllers, | + | * [[java-script: |
| - | * Service - Бизнес логика для отображения в views | + | * [[java-script: |
| + | * [[java-script: | ||
| + | * [[java-script: | ||
| * Dependency-Injection - Создает ленивые связи с объектами | * Dependency-Injection - Создает ленивые связи с объектами | ||
| * Injector - dependency injection container | * Injector - dependency injection container | ||
| - | * View - HTM представление (может содержать ng дериктивы) | + | * [[java-script: |
| * Template - HTML шаблон | * Template - HTML шаблон | ||
| - | * [[java-script: | + | * [[java-script: |
| * Markup - Обработка шаблона {{ }} | * Markup - Обработка шаблона {{ }} | ||
| - | * Filter - Обработка данных перед выводом | + | * [[java-script: |
| - | * Form controls - | + | * [[java-script: |
| * Compiler - parses the template and instantiates directives and expressions | * Compiler - parses the template and instantiates directives and expressions | ||
| * [[java-script: | * [[java-script: | ||
| - | * Behavior - Функции внутри контролера | + | * [[java-script: |
| * Model - Данные содержащиеся в контролере | * Model - Данные содержащиеся в контролере | ||
| * [[java-script: | * [[java-script: | ||
| Строка 52: | Строка 54: | ||
| <!-- directive: my-element --></ | <!-- directive: my-element --></ | ||
| + | |||
| + | ==== Ограничение / restrict ==== | ||
| + | |||
| + | При указании restrict: " | ||
| + | |||
| + | * E - для элементов | ||
| + | * A - для атрибутов | ||
| + | * C - для классов | ||
| + | * М - для комментариев | ||
| + | |||
| ==== Фазы работы директивы ==== | ==== Фазы работы директивы ==== | ||
| Строка 60: | Строка 72: | ||
| [[http:// | [[http:// | ||
| - | ==== Пример встроенных директив ==== | + | |
| + | ==== Встроенные директивы ==== | ||
| * ng-init - Инициализация APP | * ng-init - Инициализация APP | ||
| + | * ng-repeat - Выводить массив данных | ||
| + | * ng-show | ng-hide - Выводить или нет контейнер | ||
| + | * Пример: | ||
| + | * ng-class - Сообщает имя класса | ||
| + | * ng-click - Слушает событие клик на объекте | ||
| + | * ng-model - Служит для привязки контролера к элементам формы | ||
| + | |||
| + | https:// | ||
| + | |||
| + | <code html> | ||
| + | <div ng-app=" | ||
| + | <div ng-controller=" | ||
| + | <div ng-repeat=" | ||
| + | <div ng-hide=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <button ng-show=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | | ||
| + | <div ng-controller=" | ||
| + | <div class=" | ||
| + | <form name=" | ||
| + | < | ||
| + | {{review.stars}} | ||
| + | {{review.body}} | ||
| + | </ | ||
| + | <select ng-model=" | ||
| + | <option value=" | ||
| + | </ | ||
| + | < | ||
| + | <input type=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== API Директив ==== | ||
| + | |||
| + | * [[java-script: | ||
| - | ==== Пример кастомных директив | + | === Пример кастомных директив === |
| * [[http:// | * [[http:// | ||
| - | ==== Пример реализции динамических шаблонов | + | === Пример реализции динамических шаблонов === |
| * https:// | * https:// | ||
| Строка 144: | Строка 201: | ||
| </ | </ | ||
| </ | </ | ||
| + | </ | ||
| + | |||
| + | ==== Пример ==== | ||
| + | |||
| + | <code javascript> | ||
| + | app.service(' | ||
| + | this.sayHello = function() { | ||
| + | return " | ||
| + | }; | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | ===== Factory ===== | ||
| + | |||
| + | <code javascript> | ||
| + | app.factory(' | ||
| + | return { | ||
| + | sayHello: function() { | ||
| + | return " | ||
| + | } | ||
| + | }; | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | ===== Provider ===== | ||
| + | |||
| + | <code javascript> | ||
| + | app.provider(' | ||
| + | |||
| + | this.name = ' | ||
| + | |||
| + | this.$get = function() { | ||
| + | var name = this.name; | ||
| + | return { | ||
| + | sayHello: function() { | ||
| + | return " | ||
| + | } | ||
| + | } | ||
| + | }; | ||
| + | |||
| + | this.setName = function(name) { | ||
| + | this.name = name; | ||
| + | }; | ||
| + | }); | ||
| </ | </ | ||
| ===== Controller ===== | ===== Controller ===== | ||
| Строка 400: | Строка 501: | ||
| }]); | }]); | ||
| </ | </ | ||
| - | ===== Derectives ===== | ||
| - | * ng-init | ||
| - | * ng-repeat - Выводить массив данных | ||
| - | * ng-show | ng-hide - Выводить или нет контейнер | ||
| - | * Пример: | ||
| - | * ng-class - Сообщает имя класса | ||
| - | * ng-click - Слушает событие клик на объекте | ||
| - | * ng-model - Служит для привязки контролера к элементам формы | ||
| - | https:// | + | ==== Filters ==== |
| - | <code html> | + | Фильтры обрабатывают информацию и выдают определённые наборы данных, |
| - | <div ng-app=" | + | |
| - | <div ng-controller=" | + | |
| - | <div ng-repeat=" | + | |
| - | <div ng-hide=" | + | |
| - | < | + | |
| - | < | + | |
| - | < | + | |
| - | <button ng-show=" | + | |
| - | </ | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | <div ng-controller=" | + | |
| - | <div class=" | + | |
| - | <form name=" | + | |
| - | < | + | |
| - | {{review.stars}} | + | |
| - | {{review.body}} | + | |
| - | </ | + | |
| - | <select ng-model=" | + | |
| - | <option value=" | + | |
| - | </ | + | |
| - | < | + | |
| - | <input type=" | + | |
| - | </ | + | |
| - | </ | + | |
| - | </ | + | |
| - | </ | + | |
| - | </ | + | |
| - | ==== Filters ==== | + | <note tip> |
| + | |||
| + | <note tip> | ||
| - | * limitTo | + | * limitTo |
| * uppercase | * uppercase | ||
| * date:" | * date:" | ||
| - | * orderBy | + | * orderBy |
| * [[java-script: | * [[java-script: | ||
| Строка 467: | Строка 533: | ||
| soldOut: true, | soldOut: true, | ||
| } | } | ||
| + | </ | ||
| + | |||
| + | === limitTo === | ||
| + | |||
| + | Обычно применяется совместно с директивой ng-repeat | ||
| + | |||
| + | <code javascript> | ||
| + | <ul> | ||
| + | <li ng-repeat=" | ||
| + | {{ user.name }} | ||
| + | </li> | ||
| + | </ul> | ||
| </ | </ | ||
| Строка 508: | Строка 586: | ||
| </ | </ | ||
| - | ==== APP ==== | + | ===== APP ===== |
| * [[http:// | * [[http:// | ||
| + | |||
| + | ====== Привязка данных ====== | ||
| + | |||
| + | ===== Bind ===== | ||
| + | |||
| + | * ng-bind: осуществляет привязку к свойству innerText html-элемента | ||
| + | * ng-bind-html: | ||
| + | * ng-bind-template: | ||
| + | * ng-model: создает двустороннюю привязку | ||
| + | * ng-non-bindable: | ||
| + | |||
| + | ====== View / Представление ====== | ||
| + | |||
| + | ===== Form ===== | ||
| + | |||
| + | * [[java-script: | ||
| + | ===== Шаблонизация и импорт HTML ===== | ||
| + | |||
| + | * Все загруженные шаблоны хранятся в $templateCache в течение всей жизни приложения. | ||
| + | |||
| + | ===== template ===== | ||
| + | |||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | template: [ | ||
| + | '< | ||
| + | '< | ||
| + | '< | ||
| + | '{{ item }}', | ||
| + | '</ | ||
| + | '</ | ||
| + | '</ | ||
| + | ].join('' | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== templateUrl ===== | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | templateUrl: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Angular сначала поищет в DOM элемент < | ||
| + | |||
| + | <code html> | ||
| + | <script type=" | ||
| + | <div> | ||
| + | <ul> | ||
| + | <li ng-repeat=" | ||
| + | {{ item }} | ||
| + | </li> | ||
| + | </ul> | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||