Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2015, 12: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 постоянно, сорри, но для меня они оказались на его ранней стадии изучения довольно важными.
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2015, 12:38
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,220

Сообщение от deonis
Можно как-то только во view после обновления формы сделать включенными выбранные перед отправкой радио-кнопки и чтобы слой с текстовым полем тоже был выбран?
Ну ежели кнопки вызывают какое то дествие по изменению контента, то либо эти действия выставлять на сервере(к примеру развертывания какого-то div, если кнопка чеканута) либо при загрузке повторно смотреть и кликать чеканутые кнопки скриптом программно(типо дважды, если радио - единожды, хотя несложно и нормальную обработку с выставлением атрибутов и вызовом соответствующего события сделать, имхо тренировка всегда к месту)

Последний раз редактировалось Deff, 02.08.2015 в 12:41.
Ответить с цитированием
  #3 (permalink)  
Старый 03.08.2015, 09:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,781

Сообщение от deonis
Или мне надо полностью менять свое виденье в разработке и писать контроллер для данного функционала, где будет установка значений полей после загрузки, а не сразу в html-полях формы?
В хтмл ничего писать не нужно. Все должно быть в модели.
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2015, 09:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,781

Сообщение от deonis
Если задавать значения формы из JS, то во время загрузки происходит секундный показ формы без значений, а потом они подставляются. Это я что-то не так сделал или оно будет все так и надо показывать формы целиком уже после загрузки всех данных?
Из букваря...
Цитата:
Использование двойных фигурных скобок хорошо работает в title элементе, но вы могли заметить, что на самом деле, фигурные скобоки на долю секунды отображаются пользователю при загрузке страницы. Лучшим решением было бы использовать ngBind или ngBindTemplate директивы, которые невидимы для пользователя при загрузке страницы:
http://angular.ru/tutorial/step_03
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2015, 10:06
Новичок на форуме
Отправить личное сообщение для deonis Посмотреть профиль Найти все сообщения от deonis
 
Регистрация: 14.04.2011
Сообщений: 2

Спасибо, ksa. Буду копать дальше
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нестабильно срабатывает вывод значений с формы NeVirus Элементы интерфейса 8 20.02.2013 08:34
Умножение численных значений формы ввода FastSP Общие вопросы Javascript 8 08.04.2012 20:45
Cчётчик значений value в элементе формы input type="text"? Surlik jQuery 8 04.04.2012 04:49
сохранить значений полей формы в куки ivanweb Общие вопросы Javascript 1 19.01.2012 09:36
Очистка формы от дефолтных значений js hereim Общие вопросы Javascript 14 04.07.2010 21:29