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


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

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

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

4 58

4 ответа:

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

<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}}" />

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

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

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

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

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

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

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

$scope.someScopeVariable = 'somevalue'