Показать сообщение отдельно
  #1 (permalink)  
Старый 02.08.2015, 11:33
Новичок на форуме
Отправить личное сообщение для deonis Посмотреть профиль Найти все сообщения от deonis
 
Регистрация: 14.04.2011
Сообщений: 2

Установка дефолтных значений формы
День добрый.

Все время в проектах использовал 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 постоянно, сорри, но для меня они оказались на его ранней стадии изучения довольно важными.
Ответить с цитированием