| Пятница, 2 августа, 2013
Метки: AngularJS, Javascript Комментарии: 0
Паттерн Model-View-Controller (MVC, "модель-представление-контроллер") появился очень давно. Данная концепция описана еще в 1979 году. И по прошествии многих лет MVC получил множество интерпретаций. Angular перенял основные принципы, лежащие в основе оригинальной архитектуры MVC и преобразовал их в собственный способ построения клиентских веб-приложений. Разберемся подробнее - как это работает.
Из отличительных признаков MVC можно выделить следующие:
С помощью сервисов и паттерна "внедрения зависимости - dependency injection)" MVC делает приложения angular более структурированными, легкими в поддержке и c хорошей автоматической тестируемостью.
Сервисы в Angular выполняют ту же функцию, что и сервисы в приложениях на сервере, сервисы работают как постоянные легко-заменяемые блоки, объекты или компоненты, которые связаны между собой через паттерн внедрения зависимости (dependency injection).
Для понимания того, как Angular использует MVC в веб-приложениях, рассмотрим по отдельности как каждый из компонентов MVC действует в Angular:
В зависимости от контекста понятие model может обозначать как один объект, представляющий одну сущность (например объект "phones" со значением массива телефонов), так и модель всех данных приложения (много разных сущностей).
В Angular моделью могут быть любые данные, которые являются свойством встроенного angular-объекта $scope. Идентификатором модели является имя свойства. Значением свойства может быть любой Javascript-объект. (включая массивы и простые типы).
Единственное требование для того, чтобы объект JavaScript являлся моделью – это то, чтобы свойство объекта $scope ссылалось на него. Свойство может быть создано явно или неявно.
Явно модели можно создавать как свойства объекта $scope следующими способами:
function MyCtrl($scope) { // создаем свойство 'foo' для объекта $scope контроллера MyCtrl // и присваиваем ему значение 'bar' $scope.foo = 'bar'; }
<button ng-click="{{foo='bar'}}">Click me</button>
<body ng-init=" foo = 'bar' ">
Неявно Angular создает модели (создавая свойство для $scope и присваивая нужное значение), когда обрабатывает следующие конструкции:
<input ng-model="query" value="fluffy cloud">В коде выше создается модель с именем "query" для текущего объекта $scope и этой модели присваивается значение "fluffy cloud".
<p ng-repeat="phone in phones"></p>В этом коде для каждого элемента массива "phones" создается дочерний объект $scope и в каждом этом объекте создается свойство "phone" со значением элемента массива.
В Angular объект JavaScript перестает быть моделью если:
Следующая иллюстрация показывает неявно созданную простую модель данных:
Copyright © CodeHint.ru 2013-2024 (v2.4.7 - работает на Angular Universal)Калькулятор инвест-портфеля