Использование AngularJS, если я установил значение простого текстового поля на что-то вроде «bob» ниже. Значение не отображается, если ng-model
атрибут добавлен.
<input type="text"
id="rootFolder"
ng-model="rootFolders"
disabled="disabled"
value="Bob"
size="40"/>
Кто-нибудь знает простой способ обойти этот ввод по умолчанию и сохранить ng-model
? Я попытался использовать ng-bind
со значением по умолчанию, но это, похоже, тоже не работает.
javascript
html
angularjs
Привет мир
источник
источник
Войта описал «угловой путь», но если вам действительно нужно сделать эту работу, @urbanek недавно опубликовал обходной путь, используя ng-init:
https://groups.google.com/d/msg/angular/Hn3eztNHFXw/wk3HyOl9fhcJ
источник
value="Bob"
часть входного тега.Переопределение директивы input, похоже, делает свою работу. Я внес небольшие изменения в код Дэна Хансакера :
$parse().assign()
в полях без атрибутов ngModel.assign()
порядок параметров функции.источник
Угловой путь
Правильный способ сделать это - написать одностраничное приложение AJAX в шаблоне формы, а затем динамически заполнить его из модели. Модель не заполняется из формы по умолчанию, потому что модель является единственным источником правды. Вместо этого Angular пойдет другим путем и попытается заполнить форму из модели.
Однако, если у вас нет времени, чтобы начать все заново
Если у вас написано приложение, это может повлечь за собой довольно серьезные архитектурные изменения. Если вы пытаетесь использовать Angular для улучшения существующей формы, а не создавать целое одностраничное приложение с нуля, вы можете извлечь значение из формы и сохранить его в области во время ссылки, используя директиву. Затем Angular свяжет значение в области обратно с формой и сохранит его в синхронизации.
Использование директивы
Вы можете использовать относительно простую директиву, чтобы извлечь значение из формы и загрузить его в текущую область. Здесь я определил директиву initFromForm.
Вы можете видеть, что я определил пару запасных вариантов, чтобы получить название модели. Вы можете использовать эту директиву в сочетании с директивой ngModel или связать с чем-то, кроме $ scope, если вы предпочитаете.
Используйте это так:
Обратите внимание, что это также будет работать с текстовыми областями и выбирать выпадающие списки.
источник
input="text"
. Если у вас есть,number
он выдаст Модель не типаnumber
docs.angularjs.org/error/ngModel/numfmt?p0=333if (attrs.type === "number") val = parseInt(val);
Обновление: Мой первоначальный ответ состоял в том, чтобы контроллер содержал код с поддержкой DOM, который нарушает соглашения Angular в пользу HTML. @dmackerman упомянул директивы в комментарии к моему ответу, и я до сих пор совершенно не замечал этого. С этим вводом вот правильный способ сделать это, не нарушая соглашения Angular или HTML:
Есть также способ получить и то и другое - получить значение элемента и использовать его для обновления модели в директиве:
а потом:
Конечно, вы можете изменить указанную выше директиву, чтобы сделать больше с
value
атрибутом, прежде чем устанавливать для модели его значение, в том числе использовать$parse(attrs.value, scope)
для обработкиvalue
атрибута как углового выражения (хотя я бы, вероятно, использовал для этого другой атрибут [custom], лично поэтому стандартные атрибуты HTML постоянно рассматриваются как константы).Кроме того, возникает аналогичный вопрос в разделе «Создание данных, шаблонизированных в доступной для ng-модели», что также может представлять интерес.
источник
Если вы используете директиву AngularJs ngModel, помните, что значение
value
атрибута не связывается с полем ngModel. Вы должны инициировать его самостоятельно, и лучший способ сделать этоисточник
Это небольшая модификация предыдущих ответов ...
Нет необходимости в $ parse
источник
Привет, вы можете попробовать ниже методы с инициализацией модели.
Здесь вы можете инициализировать ng-модель текстового поля двумя способами
- с использованием ng-init
- с использованием $ scope в js
источник
Проблема в том, что вы должны установить ng-модель для родительского элемента, где вы хотите установить ng-значение / значение. Как упомянуто Angular:
Например: это исполняемый код:
Примечание. В приведенном выше случае у меня уже был ответ JSON на ng-модель и значение, я просто добавляю другое свойство к объекту JS как «MarketPeers». Таким образом, модель и значение могут зависеть от необходимости, но я думаю, что этот процесс поможет иметь и модель ng, и значение, но не иметь их на одном элементе.
источник
У меня была похожая проблема. Я не смог использовать
value="something"
для отображения и редактирования. Я должен был использовать нижеприведенную команду внутри моей<input>
модели с объявленной моделью.Где у меня есть список данных в объекте
userDataToPass
и элемент, который мне нужно отобразить и отредактироватьpinCode
.Для того же я ссылался на это видео на YouTube
источник