Установка дефолтных значений формы
День добрый.
Все время в проектах использовал JQuery и тут решил, что пора переходить к MVC и в javascript. Начал небольшой тестовый проект и сразу возникла проблема с пониманием. Прошу подсказать как решить возникшую для меня сложность. Есть блок с двумя радио-кнопками, которые по умолчанию не отмечены. Ниже слой с текстовым полем. Слой скрыт, пока не будет выбрана одна из радио-кнопок. Упрощенный код ниже: <div ng-app> <div class="form-group"> <label class="radio-inline"> <input type="radio" name="p_type" value="1" ng-model="p_type" required> один </label> <label class="radio-inline"> <input type="radio" name="p_type" value="2" ng-model="p_type" required> два </label> </div> <div class="form-group" ng-show="p_type > 0"> <input type="text" name="name" value="" required> </div> </div> Я добавил ng-app, ng-model="p_type" кнопкам и ng-show="p_type > 0" скрытому полю. В итоге, после загрузки формы все работает. Нажимаю на кнопку — появляется блок. 1. Первая сложность у меня появилась после того, как форма была отправлена на сервер и вернулась с какой-то ошибкой или же зашли в эту форму для редактирования сущности. Сложность непосредственно в установке какой-то кнопке, что она отмечена и соответственно чтобы слой с текстовым полем тоже показывался. Сначала пытался с помощью серверного языка просто добавить checked="checked", но Angular это не замечает и оставляет радио-кнопки формы не отмеченными. Затем нашел возможность установить с помощью серверного языка ng-checked="true". Кнопки становятся уже включенными, но блок с текстовым полем не появляется. Можно как-то только во view после обновления формы сделать включенными выбранные перед отправкой радио-кнопки и чтобы слой с текстовым полем тоже был выбран? Или мне надо полностью менять свое виденье в разработке и писать контроллер для данного функционала, где будет установка значений полей после загрузки, а не сразу в html-полях формы? 2. Из первого вопроса вытекает второй вопрос. У меня не standalone-приложение, а «банальный» сайт, но я хочу использовать Angular вместо JQuery. Мне заполнение значений полей после загрузки формы можно задавать через их вставку сразу в html-теги <input type="text" name="name" value="<?=$text?>" required>. Или все-таки лучше переходить на полное использование Angular и задавать дефолтные значения загруженной формы через JS? 3. Из второго вопроса вытекает третий :) Если задавать значения формы из JS, то во время загрузки происходит секундный показ формы без значений, а потом они подставляются. Это я что-то не так сделал или оно будет все так и надо показывать формы целиком уже после загрузки всех данных? В частности если блоку с текстовым полем установить класс hidden и он будет скрытым при загрузке или же style="display:none;", то блок будет скрытый при загрузке, но констуркция ng-show="p_type > 0" не покажет его при выборе радио-кнопки. Вопросы скорей всего нубские для людей, что работают с Angular постоянно, сорри, но для меня они оказались на его ранней стадии изучения довольно важными. |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Спасибо, ksa. Буду копать дальше :)
|
Часовой пояс GMT +3, время: 17:41. |