RodgerFox
@RodgerFox

Мифическое наследование с учетом ng-repat,в ангуляре. Какое решение верно?

Приветствую тебя!
Изучая ангуляр, на предворительно созданной задаче столкнулся с крайне не понятной (мифической) наследовательности данных.
В аномалии участвуют: angular 1.4, ui.sortable (удобной сортировке блоков), textAngular (редактор контента).
Есть многомерный массив, его выводим при помощи ng-repeat. В каждом "экземпляре" взятым из массива, имеется поле с контентом которого и работает, при помощи textAngular'a. Для добавления новых блоков использую фичу с клонированием вместе с ui.sortable (для эфект драг дропа), близкий пример (вся суть в идентичном ui-sortable="sortableOptions", для отдельных блоков. Но когда берем из опред. блока и перетаскиваем к остальным элементам выведенных через ng-repeat, через предвариательную копию выбранного элемента возвращаем его назад. т.е. копируем экземпляр.)
Все прекрасно работает, до тех пор пока не редактируем новый экземпляры, перенесенные в основной массив. Как уже можно догадаться или еще нельзя, проблема заключается в дублировании контента на всех скопированных блоках, хотя для них создались свои редакторы, со своими уникальными идентификаторами и т.д.
Где и как можно и нужно отслеживать эту метафизическую связь уже отдельных блоков?
Массив многомерный и у блоки могут и располагаются у разных "родителей".
Спасибо.
p.s. Документацию по редактору читал. Не уверен, что проблема связанна в нем, может есть какая то магия, когда я заношу новый объект в основной массив (с остальными объектами)?

Просили воссоздать задачу: codepen.io/Velentin/pen/RPBxYw (внизу блок "New Element" , его можно и нужно перетащить к другим блокам).
  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ответы на вопрос 1
streetflush
@streetflush
Может я не совсем понял, но как вариант хранить 2 массива ID а основной массив с элементами служит для отображения, как справочная таблица?
Т.е. перетаскиваешь неизменную цифирку (id), а потом mainArray[id] для отображения

Upd. -- зря я распинался
UpdUpd.

$scope.newElem = copElem.slice();
Заменить на:
$scope.newElem = angular.copy(copElem);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы