Подтвердить что ты не робот

Изменить значение входного заполнителя через модель?

Я пытаюсь изменить значение входного заполнителя с контроллера, но не могу понять, как это сделать.

input(type='text', ng-model='inputText', side='30', placeholder='enter username')

Есть ли способ изменить атрибуты элемента модели?

4b9b3361

Ответ 1

Вы можете связать с переменной в контроллере:

<input type="text" ng-model="inputText" placeholder="{{somePlaceholder}}" />

В контроллере:

$scope.somePlaceholder = 'abc';

Ответ 2

Принятый ответ по-прежнему бросил Javascript-ошибку в IE для меня (по крайней мере для Angular 1.2). Это ошибка, но обходным путем является использование ngAttr, подробно описанного в https://docs.angularjs.org/guide/interpolation

<input type="text" ng-model="inputText" ng-attr-placeholder="{{somePlaceholder}}" />

Проблема: https://github.com/angular/angular.js/issues/5025

Ответ 3

Так как у AngularJS нет директивных манипуляций с DOM, как это делает jQuery, правильный способ изменения атрибутов одного элемента будет использовать директиву. Через функцию ссылки директивы вы получаете доступ как к элементу, так и к его атрибутам.

Объединяя весь ввод внутри одной директивы, вы все равно можете ввести методы ng-model через свойство контроллера.

Этот метод поможет отделить логику ngmodel с заполнителем от контроллера. Если между ними нет никакой логики, вы можете определенно пойти, как сказал Вагнер Франсиско.

Ответ 4

Как сказал Вагнер Франсиско (в JADE)

input(type="text", ng-model="someModel", placeholder="{{someScopeVariable}}")`

И в вашем контроллере:

$scope.someScopeVariable = 'somevalue'