Ответ 1
Вы можете связать с переменной в контроллере:
<input type="text" ng-model="inputText" placeholder="{{somePlaceholder}}" />
В контроллере:
$scope.somePlaceholder = 'abc';
Я пытаюсь изменить значение входного заполнителя с контроллера, но не могу понять, как это сделать.
input(type='text', ng-model='inputText', side='30', placeholder='enter username')
Есть ли способ изменить атрибуты элемента модели?
Вы можете связать с переменной в контроллере:
<input type="text" ng-model="inputText" placeholder="{{somePlaceholder}}" />
В контроллере:
$scope.somePlaceholder = 'abc';
Принятый ответ по-прежнему бросил Javascript-ошибку в IE для меня (по крайней мере для Angular 1.2). Это ошибка, но обходным путем является использование ngAttr, подробно описанного в https://docs.angularjs.org/guide/interpolation
<input type="text" ng-model="inputText" ng-attr-placeholder="{{somePlaceholder}}" />
Так как у AngularJS нет директивных манипуляций с DOM, как это делает jQuery, правильный способ изменения атрибутов одного элемента будет использовать директиву. Через функцию ссылки директивы вы получаете доступ как к элементу, так и к его атрибутам.
Объединяя весь ввод внутри одной директивы, вы все равно можете ввести методы ng-model через свойство контроллера.
Этот метод поможет отделить логику ngmodel с заполнителем от контроллера. Если между ними нет никакой логики, вы можете определенно пойти, как сказал Вагнер Франсиско.
Как сказал Вагнер Франсиско (в JADE)
input(type="text", ng-model="someModel", placeholder="{{someScopeVariable}}")`
И в вашем контроллере:
$scope.someScopeVariable = 'somevalue'