Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.05.2013, 04:51
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Проектирование AngularJS приложений
В Ангуляре любое изменение производится через область видимости (scope). Просто так, даже стиль у элемента не сменить. И это здорово.

Тем не менее, при проектировании можно использовать две стратегии:

1. Напрямую менять модель из представления, а потом все изменения вотчить. Атрибуты будут выглядеть преимущественно так: ng-click="model.param=true" и вся дальнейшая работа происходит в контроллере, наблюдающем за model

2. Вызывать из представления функции контроллера. Атрибуты будут выглядеть преимущественно так: ng-click="changeParam()" и вся последующая работа будет происходить в соответствующем методе контроллера.

Пока пользуюсь первым способом, который интуитивно мне ближе, но хотелось бы услышать мнение со стороны.
Ответить с цитированием
  #2 (permalink)  
Старый 02.06.2013, 13:53
Новичок на форуме
Отправить личное сообщение для gorpacrate Посмотреть профиль Найти все сообщения от gorpacrate
 
Регистрация: 02.06.2013
Сообщений: 2

Глубоко убеждён, что всю логику лучше хранить в контроллерах/директивах. То есть оставить представлению только функции собственно представления данных и реагирования на действия пользователя. То есть я за пункт 2.

Очевидные плюсы:
- убираем лишнюю логику из представления. смотря на код контроллера, нам не нужно дополнительно думать, что какое-то значение может быть изменено в каком-то из представлений.
- сразу избавляемся от колбасы из $watch'ей в контроллере, на смену которым приходят короткие и ясные функции.
- что-то мне подсказывает, что дёрнуть один раз функцию контроллера будет гораздо менее ресурсозатратно, чем постоянно мониторить значение dirty checking'ом.
Ответить с цитированием
  #3 (permalink)  
Старый 03.06.2013, 00:56
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

То же самое мне советовали в списке рассылки. Уже отказался от своего способа. Недавно даже сделал пример со сравнением подходов: http://www.angular.ru/cookbook/watcharray
Ответить с цитированием
  #4 (permalink)  
Старый 03.06.2013, 14:29
Новичок на форуме
Отправить личное сообщение для gorpacrate Посмотреть профиль Найти все сообщения от gorpacrate
 
Регистрация: 02.06.2013
Сообщений: 2

Пример с $watch по ссылке не работает.
Ответить с цитированием
  #5 (permalink)  
Старый 03.06.2013, 18:04
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Это издержки тамошнего движка обработки примеров. Уже починил, теперь работает :-)
Ответить с цитированием
  #6 (permalink)  
Старый 03.06.2013, 21:29
Новичок на форуме
Отправить личное сообщение для Vhornets Посмотреть профиль Найти все сообщения от Vhornets
 
Регистрация: 24.09.2012
Сообщений: 8

Если нужна наглядность, можно присваивать функции прямо в this конструктора контроллера и возвращать скоуп.

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

app.controller('MyCtrl', function($scope) {
    this.hello = function() {
        alert('Ssssssssssssssss');
    };

    return $scope.MyCtrl  = this;
});


Затем во вьюшке сразу видно, из какого контроллера вызывается функция (чтобы не подглядывать в роутинг):
<p data-ng-click="MyCtrl.hello()">Click here</p>


Подглядел у этого парня
Ответить с цитированием
  #7 (permalink)  
Старый 04.06.2013, 18:45
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Сообщение от Vhornets Посмотреть сообщение
Подглядел у этого парня
Что-то ссылка не работает...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Архитектура javascript приложений amigo* Общие вопросы Javascript 19 12.03.2014 13:51
ООП в javascript. Алгоритмы построения приложений dmitry111 Оффтопик 17 08.06.2013 20:18
Почитать о разработке масштабируемых клиентских javascript приложений shkoder Общие вопросы Javascript 2 01.12.2012 09:26
javascript для создания настольных приложений alexandrr Оффтопик 2 26.11.2012 13:23
Отладка приложений cuberboy Мобильный JavaScript 0 20.02.2012 12:40