Как динамически обновлять содержимое в компоненте "dialog" в Lumx
Сейчас у меня во frontend статически прописаны все элементы input type="text", а требуется сделать, чтобы эти элементы формировались динамически. Проблем с тем, где взять "Name", "Id" и "остальные атрибуты и параметры элементов" - нет, они содержатся в массиве с js-объектами.
Интересует методика/подход с помощью которого это реализовывается в angular, как вариант например такой: может быть формировать .tpl, а затем его подгружать? Вот так во frontend статически прописаны все элементы input:
<lx-dialog id="{{ dialogIdAdd }}">
<lx-dialog-header>
<div class="toolbar bgc-primary pl++">
<span class="toolbar__label tc-white fs-title">
Добавление
</span>
<div class="toolbar__right">
<lx-button lx-size="l" lx-color="white" lx-type="icon" lx-dialog-close>
<i class="mdi mdi-close"></i>
</lx-button>
</div>
</div>
</lx-dialog-header>
<lx-dialog-content>
<div id="listAddElements" class="p++">
<lx-text-field lx-label="add new image">
<input id="imageNew" name="imageNew" type="text" ng-model="imageNew">
</lx-text-field>
<lx-text-field lx-label="add new dessert">
<input id="dessertNew" name="dessertNew" type="text" ng-model="dessertNew">
</lx-text-field>
<lx-text-field lx-label="add new calories">
<input id="caloriesNew" name="caloriesNew" type="text" ng-model="caloriesNew">
</lx-text-field>
<lx-text-field lx-label="add new fat">
<input id="fatNew" name="fatNew" type="text" ng-model="fatNew">
</lx-text-field>
<lx-text-field lx-label="add new comments">
<input id="commentsNew" name="commentsNew" type="text" ng-model="commentsNew">
</lx-text-field>
</div>
<div class="p++">
<lx-button id="button-add" class="bgc-indigo-500" lx-size="xs" lx-type="raised" ng-click="addDialogField()">Добавить</lx-button>
</div>
</lx-dialog-content>
<lx-dialog-footer>
</lx-dialog-footer>
</lx-dialog>
Массив js-объектов с атрибутами для формирования элементов input:
$scope.dataTableTbody = [
{
id: 11,
image: '/images/placeholder/1-square.jpg',
dessert: 'Frozen yogurt',
calories: 159,
fat: 6.0,
comments: 'Lorem ipsum'
},
{
id: 13,
image: '/images/placeholder/3-square.jpg',
dessert: 'Eclair',
calories: 262,
fat: 16.0,
comments: 'Lorem ipsum'
}];
|
Пробовал вот таким вот образом, но не заработало:
document.querySelector("div[id$='dialog-add']").innerHTML = '<lx-dialog-header><div class="toolbar bgc-primary pl++"><span class="toolbar__label tc-white fs-title">Добавление</span><div class="toolbar__right"><lx-button lx-size="l" lx-color="white" lx-type="icon" lx-dialog-close><i class="mdi mdi-close"></i></lx-button></div></div></lx-dialog-header><lx-dialog-content><div id="listAddElements" class="p++"><lx-text-field lx-label="add new image"><input id="imageNew" name="imageNew" type="text" ng-model="imageNew"></lx-text-field><lx-text-field lx-label="add new dessert"><input id="dessertNew" name="dessertNew" type="text" ng-model="dessertNew"></lx-text-field><lx-text-field lx-label="add new calories"><input id="caloriesNew" name="caloriesNew" type="text" ng-model="caloriesNew"></lx-text-field><lx-text-field lx-label="add new fat"><input id="fatNew" name="fatNew" type="text" ng-model="fatNew"></lx-text-field><lx-text-field lx-label="add new comments"><input id="commentsNew" name="commentsNew" type="text" ng-model="commentsNew"></lx-text-field></div><div class="p++"><lx-button id="button-add" class="bgc-indigo-500" lx-size="xs" lx-type="raised" ng-click="addDialogField()">Добавить</lx-button></div></lx-dialog-content><lx-dialog-footer></lx-dialog-footer>';
т.е. подменяю содержимое всего div компонента "dialog" (LUMX) - новым содержимым. Но такой вариант не заработал, диалоговое окно открывается, поля отображаются/появились, но перестали работать кнопки и эффекты анимации. Сейчас пробую реализовать на document.createElement, но мне кажется должно быть другое решение в angular |
Как и предполагал в angular имеется вариант решения моей задачи через ng-include и templates - http://stackoverflow.com/questions/2...orm-generation (см. вариант ответа отмеченный правильным)
|
:blink:
это что за старая версия ангуляра у вас используется в проекте? Это решается созданием компонента, который будет рисовать форму и прокидыванием сверху через биндинги куска состояния (элемент массива dataTableTbody в данном случае). Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 04:31. |