66

我正在尝试从控制器更改输入占位符的值,但无法弄清楚如何。

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

有没有办法修改模型的元素属性?

4

4 回答 4

136

您可以绑定控制器中的变量:

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

在控制器中:

$scope.somePlaceholder = 'abc';
于 2013-07-18T01:50:09.760 回答
21

对我来说,接受的答案仍然在 IE 中引发了 Javascript 错误(至少对于 Angular 1.2)。这是一个错误,但解决方法是使用 https://docs.angularjs.org/guide/interpolation 上详述的ngAttr

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

问题:https ://github.com/angular/angular.js/issues/5025

于 2016-06-08T17:08:40.467 回答
7

由于 AngularJS 不像 jQuery 那样具有指令性 DOM 操作,因此修改一个元素的属性的正确方法是使用指令。通过指令的链接功能,您可以访问元素及其属性。

将整个输入包装在一个指令中,您仍然可以通过控制器属性引入 ng-model 的方法。

此方法将有助于将 ngmodel 的逻辑与控制器的占位符解耦。如果它们之间没有逻辑,你绝对可以像瓦格纳弗朗西斯科所说的那样去。

于 2013-07-18T01:51:40.403 回答
5

正如瓦格纳弗朗西斯科所说,(在 JADE 中)

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

在你的控制器中:

$scope.someScopeVariable = 'somevalue'
于 2014-10-11T09:19:36.737 回答