2015-10-02 2 views
0

Я создаю (через Jade + Express.js + Node.js) страницу HTML, где я устанавливаю value элемента input[text]. Однако, даже если это значение установлено правильно (проверено путем просмотра исходного кода, Ctrl + U в FF), интерфейс показывает пустое текстовое поле, а при проверке элемента в FF отображаются дополнительные классы AngularJS, добавленные к этому элементу input[text].Почему AngularJS добавляет дополнительные классы к серверному продукту?

Соответствующая строка в шаблоне Джейд:

input(type="text", class="form-control", tabindex=1, id="episodeVal", ng-model="epName", value="#{epName}") 

Выход из Джейд, генерируется с помощью Node.js (который так же, как в ожидании):

<input type="text" tabindex="1" id="episodeVal" ng-model="epName" value="Arbit" class="form-control"> 

"Компьютерной" (правильное слово?), показанный элементом «Inspect element» Firefox (это показывает дополнительные классы AngularJS):

<input tabindex="1" id="episodeVal" ng-model="epName" value="Arbit" class="form-control ng-pristine ng-valid ng-touched" type="text"> 

Почему AngularJS добавляет эти дополнительные классы? Правильно ли я полагаю, что это то, что мешает браузеру показывать value набор для input[text]?

Пожалуйста, дайте мне знать, если потребуется дополнительная информация.

Update 1: Просто заметила, что форма вшита также имеет дополнительный ng-pristine и ng-valid, примененный к нему) и FF

ответ

0

Окончательное решение, которое работало на меня использует ng-init для инициализации значения epName (фрагмент синтаксиса шаблона Джейд):

ng-init="epName = \"#{epName}\";" 

, который выводит HTML (фрагмент):

ng-init="epName = &quot;New One&quot;;" 

на input тега ,

Благодаря @Chandermani для указания меня в правильном направлении.

2

Нет дополнительные классы не влияют на поведение.

Эти классы описывают состояние формы. См. Документацию по адресу Angular Forms, чтобы узнать, каково значение этих классов.

Приходит к вашей проблеме, даже если вы установили свойство value, так как используете ng-model="epName", все, что есть в $scope.epName, будет установлено на input.

+0

Я не устанавливаю значение '$ scope.epName' ни для чего. Как я могу получить 'input [text]' 's' value' для отображения? Я не могу установить значение '$ scope.epName' на сервере ... – markvgti

+0

Поскольку ng-model используется для поддержки двухсторонней привязки, вам нужно инициализировать' epName' со значением, которое вы хотите показать.Он не может быть инициализирован со значением свойства ввода. – Chandermani

0

Вам не нужно устанавливать значение в угловом направлении, и автоматически укажет, что она соответствует вашей модели в JS. Поэтому, если epModel в JS равно «someValue», входное значение будет автоматически установлено на это.

Таким образом, вместо установки значения ввода, установите его в JavaScript, если у вас уже есть не

Смежные вопросы