Pull to refresh
5
0
Павел Иванов @ardentum

User

Send message
Внутри — может быть и одно и то же, но при написании библиотеки важно все же как это снаружи, для пользователя библиотеки.
В вашем случае описание элементов карты находится где-то в контроллере, в моем — во view, что правильнее, т.к. карта и ее элементы — это отображение. В моем подходе можно, например, применить фильтры для сериализации некой модели гео-объектов в удобный для директивы вид:

<ng-map-marker ng-repeat="geoObject in geoObjects" source="geoObject|serializeGeoObject">

Это, конечно, может быть медленнее в целом, но подход более чистый для разделения безнес-логики и вью-логики.
В свое время релизоаывал прослойку для гуглокарт. У меня была такая структура:
  • общая директива ng-map создавала общий scope и принимала общие конфиги для всех объектов карты, все нижеперечисленные директивы должны быть вложены внутрь данной.
  • ng-map-canvas для полотна карты
  • ng-map-marker для позиционирования маркера. Для нескольких маркеров можно использовать ng-repeat :)
  • ng-map-route и ng-map-route-waypoint (в сочетании с ng-repeat) для отрисовки маршрутов
  • ng-markers-cloud — оптимизированный вариант для показа большого количества маркеров, в ng-model можно передать массив для вывода. Из минусов — наблюдение за массивом ведется только по ссылке, изменение отдельных элементов не приведет к перерисовке.
  • ng-map-overlay — универсальная директива, годится как для отображения кастомных маркеров, так и для модальных окон на карте, всплывающих облачков, тултипов. Создавала оверлэй для карты, куда помещалось переданное внутри директивы html-содержимое со всеми преимуществами дата-байндинга.


Мне лично кажется, что такой подход — с описанием объектов карты в разметке более соответствует принципам фреймворка.
Через resolve — да, удобно очень.
Да, уже нашел. Все же стоило бы отдельно упомянуть:)
По поводу неудоства работы в контроллере: если получение данных асинхронно, то в любом случае в колбэке придется с ними работать.
Статью не читал, но при беглом поиске не нашел ничего про промисы в шаблонах.

В чем кайф:

$scope.user = User.get(1) // ассинхронный метод возвращает промис (в angular-resource 1.2 так)

Работаем с промисом как с обычным объектом:
{{user.name}}


Ангуляр сам дождется пока все промисы в шаблоне не будут выполнены, и только потом отрендерит его с результируюшими объектами. Красота и удобство.
В ветке 1.1 и promises для ресурсов, и always уже есть — осталось дождаться стабильного релиза (1.2).
Упс, выше уже ответили наполовину.
А какие проблемы с директивами, какой трешак? Ну, работы чуть больше выходит, да, но вот серьезных проблем при полностью правильном подходе не обнаруживал. Ну и да, ангуляр-то предназначен как раз для сингл-пейдж приоложений, не для простеньких сайтов.
Вот бы еще поддеоржку jsdoc (coffeedoc?) для кофескрипта. Не планируете?
Учитывая это, часто моргать может оказаться не очень полезно для умственной деятельности.
Поиграйте в упомянутую выше цивилизацию, в новый xcom, в dark souls (осторожно только), в hotline miami, в faster then light. Масса интересных игр. А еще масса игр с прекрасным миром — чего только стоит «тупой боевик» бордерлэндс, которому хочется стоя аплодировать за реплики персонажей.
Не смотрели в сторону MVVM- фреймворков? AngularJS, EmberJS (может быть каких-то аналогов)? MVVM представляется более логичным и подходящим для фронт-енда по сравнению с MVC. Опять-же, верстальшики будут в восторге, да еще и смогут помимо верстки добавлять базовую динамику для вьюх.
Не все решения там хороши, но заглянуть в реализации очень полезно — узнал для себя много нового из того, чего нет или невозможно найти в документации.

И да, вообще на данный момент документация — одна из главных проблем фреймворка. Код документирован прекрасно, но на офф.сайте есть далеко не все.
В RoR-тусовке кофе уже практически стандарт. Сам вот нынешний проект таки решился писать на кофе. Да, глазам зацепиться не за что, да, местами чувствуешь себя ограниченным, но скорость разработки явно выше.
Не, все правильно — в карму то отложили чутка!
Кстати, с совершенно неудобным для 13 дюймов FullHD.
Ну еще немного операционной системой и качеством исполнения.
После прочтения поста у меня появилось отвращение к слову «троллить». Можно для разнообразия хотя бы иногда его заменять.
В AngularJS есть $scope.$watch("variable", function() { ... }) — в общем-то те-же observerables. А вот по поводу кастомных биндингов это вы совсем зря — есть же взиожность добавления кастомынх директив, даже на главной странице есть пример (про компоненты табов). Плюс за счет тех-же директив в ангуляре легко реализуются reusable-компоненты, с которыми в knockout была беда, насколько я понял (выбирал между двумя фреймворками).

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity