Полностью с вами согласен. От всего этого уже потихоньку избавляюсь. Очень ваши советы с justboris-ом помогли. Действительно я там много сделал того, что можно реализовать встроенными средствами angular. Думаю сегодня в репозитарии появиться новая реализация. Она пока будет поддерживать только показ данных (без редактирования).
Я так понял главная причина изобретение собственного велосипеда заключается в том что не хочется подгружать чего-то типа AngularJS, Ember и прочих Knockouts.
AngularJS 80k и для простых задач jquery вообще не нужен.
JQuery 1.7 = 92k и плюс еще Zepto.
На счет "создает значительную run-time нагрузку", не уверен что ваше решение создаст ее меньше. Такая нагрузка бывает когда не правильно инструмент используешь, а не сама по себе возникает при использовании чего-то типа AngularJS, Ember и прочих Knockouts.
И как потом эту структуру синхронизировать с картой? Все равно чтобы удалить, отредактировать и т.д. что-либо на карте нужно вызывать javascript, все тот же метод synchronize.
Или же вы предлагаете напрямую работать с html карты?
Все несколько проще. В этом случае мы просто определяем разность массивов, и удаляем с карты удаленные маркеры, обновляем обновленные и т.д. А ng-repeat при каждом изменении массива будет вызывать полную перерисовку карты.
Ну так это и понятно. Ни кто вам не запрещает использовать jquery, но подход angular очень сильно отличается от подхода jquery, и ее использование не особо приветствуется.
Даже такие проекты как Angular.UI постепенно уходят от нее, а UI.Bootstrap вообще без нее обходится.
В таком случае это то же, что и: var centers = [...], counter = 0; $scope.changeCenter = function(){ $scope.mapProperties.params.center = centers[counter++%4]; };
Откуда в angular вдруг зависимость от jquery?
Там есть встроенное средство JLite, если не ошибаюсь. JQuery подключается при необходимости, но зависимости от него нет.
А что мешает применить фильтры, или любые функции для получения выходного набора прямо в контроллере?
На счет отображения, параметры отображения карты в моем случае находятся не в контроллере, а в настройках провайдера. В контроллере просто существует возможность переопределить некоторые из них в случае необходимости (хотя сомнительно что это кому понадобится). Но это конечно можно делать и в представлении, но в этом случае оно здорово распухнет, и потеряет в производительности.
Но чисто в концептуальном плане согласен с вами. Хотя любую концепцию тоже не стоит потреблять вслепую. Чтобы выяснить что лучше, по уму, нужно написать код по обоим вариантам и пропустить его через тесты на производительность. Возможно я попробую это сделать на досуге.
А по мне, так это дело вкуса. В чем разница между <div ya-map="..." ng-model="..." ... ></div>
и <div ng-map> <ng-map-canvas> <ng-map-marker ng-repeat="..."> </div>
???
На функционал это не как не влияет, внутри происходит одно и тоже.
AngularJS 80k и для простых задач jquery вообще не нужен.
JQuery 1.7 = 92k и плюс еще Zepto.
На счет "создает значительную run-time нагрузку", не уверен что ваше решение создаст ее меньше. Такая нагрузка бывает когда не правильно инструмент используешь, а не сама по себе возникает при использовании чего-то типа AngularJS, Ember и прочих Knockouts.
Но скорее всего есть и более элегантные подходы.
ng-animate
пока не было.И как потом эту структуру синхронизировать с картой? Все равно чтобы удалить, отредактировать и т.д. что-либо на карте нужно вызывать javascript, все тот же метод synchronize.
Или же вы предлагаете напрямую работать с html карты?
ng-repeat
при каждом изменении массива будет вызывать полную перерисовку карты.Даже такие проекты как Angular.UI постепенно уходят от нее, а UI.Bootstrap вообще без нее обходится.
var centers = [...], counter = 0;
$scope.changeCenter = function(){
$scope.mapProperties.params.center = centers[counter++%4];
};
Там есть встроенное средство JLite, если не ошибаюсь. JQuery подключается при необходимости, но зависимости от него нет.
На счет отображения, параметры отображения карты в моем случае находятся не в контроллере, а в настройках провайдера. В контроллере просто существует возможность переопределить некоторые из них в случае необходимости (хотя сомнительно что это кому понадобится). Но это конечно можно делать и в представлении, но в этом случае оно здорово распухнет, и потеряет в производительности.
Но чисто в концептуальном плане согласен с вами. Хотя любую концепцию тоже не стоит потреблять вслепую. Чтобы выяснить что лучше, по уму, нужно написать код по обоим вариантам и пропустить его через тесты на производительность. Возможно я попробую это сделать на досуге.
<div ya-map="..." ng-model="..." ... ></div>
и
<div ng-map>
<ng-map-canvas>
<ng-map-marker ng-repeat="...">
</div>
???
На функционал это не как не влияет, внутри происходит одно и тоже.