AngularJS: ng-placeholder не работи

Имам следния входен html елемент, на който искам да променя контейнера в зависимост от това какво се съхранява в моя потребителски модел.

<input type="text" class="form-control" id="Username" name="Username" data-ng-model="user.Username" required="" ng-placeholder="{{user.AdAccount ? 'Username' : 'Ad Login'}}">

Дори опитах този метод, за който се казва, че е работил в предишни версии на angular, но без успех.

ng-placeholder="user.AdAccount == true && 'Username' || 'AD Login'" 

В момента моят заместител просто изглежда напълно празен. Също така знам, че AdAccount държи true/false правилно, защото се използва другаде във формуляра с ng-show.


person user3407039    schedule 01.06.2015    source източник
comment
коя версия на Angular използвате   -  person chandu    schedule 01.06.2015
comment
Опитахте ли линията, която използвате сега, без {{}}?   -  person Guinn    schedule 01.06.2015
comment
Здравейте, използвам 1.3.15, който, съдейки по отговор, който видях другаде тук, трябва да е наред? И да, @Guinn, опитах го без фигурните скоби и нямаше значение.   -  person user3407039    schedule 01.06.2015


Отговори (3)


Не мисля, че има директива ngPlaceholder. Опитайте да промените кода си на:

<input type="text" class="form-control" id="Username" name="Username" data-ng-model="user.Username" required="" placeholder="{{user.AdAccount ? 'Username' : 'Ad Login'}}" />

Тоест, променете ng-placeholderсамо в placeholder и всичко трябва да работи добре.

(Обърнете внимание и на самозатварящата се наклонена черта, ако трябва да се съобразите с валиден XHTML.)

person Oskar Lindberg    schedule 01.06.2015
comment
Всъщност не знаех, че тези условни изрази ще работят извън директивите ng. Благодаря! - person user3407039; 01.06.2015
comment
{{ ... }} кара angular да оценява всеки даден израз във фигурните скоби - опитайте само {{ 2 + 2 }} или каквото и да е, и ще видите. Ако все пак използвате директиви, нямате нужда от къдриците. - person Oskar Lindberg; 01.06.2015
comment
Да изглежда очевидно сега, когато го казваш -_- - person user3407039; 01.06.2015
comment
Моля, имайте предвид, че този подход може да не работи в Internet Explorer. Вж. docs.angularjs.org/guide/ie Вероятно искате да използвате ng-attr-placeholder вместо това. - person johey; 20.11.2018

Можете да опитате това:

<input type="text" class="form-control" id="Username" name="Username" data-ng-model="user.Username" required="" ng-attr-placeholder="{{user.AdAccount ? 'Username' : 'Ad Login'}}">

ng-attr- ще работи с всеки HTML атрибут.

person Hussain    schedule 31.08.2016

В HTML:

<input type="text" placeholder="{{doctorname ? doctorname : 'Dr. your name'}}"
       class="editable-class" ng-model="doctor.name" readonly/>

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

$scope.doctorname = $scope.doctorinfo.name;
person Abhishek Saxena    schedule 17.11.2015