2013-07-18 2 views

ответ

102

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

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

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

$scope.somePlaceholder = 'abc'; 
+0

это работает, однако, все выражение виден конечным пользователям для короткой задержки. Вот почему есть ng-привязка. См. Https://docs.angularjs.org/api/ng/directive/ngBind –

+7

Также не работает в IE, вызывая ошибку. Предположительно та же причина, почему syle = "{{}}" не рекомендуется: https://docs.angularjs.org/guide/ie – velochy

+0

@ BùiThanhHải точно, как вы в этом случае используете ng-bind? Получил образец кода? –

7

Поскольку AngularJS не имеют директивы DOM манипуляции как это делает JQuery, правильный способ изменить атрибуты одного элемента будет использовать директиву. С помощью функции ссылки директивы вы имеете доступ как к элементу, так и к его атрибутам.

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

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

3

Как уже говорилось, (в JADE)

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

И в контроллере Wagner Франциско:

$scope.someScopeVariable = 'somevalue' 
+5

@cpburnz - Это похоже на действительную попытку ответить на этот вопрос. Если вам это не нравится, вы должны понизить его, а не отмечать его для удаления. – ArtOfWarfare

+0

Точно такой же ответ, как @Wagner Francisco –

15

Принятая ответ еще бросил ошибку Javascript в IE для меня (для угловых 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

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