通过模型更改输入占位符的值?

Jon*_*atz 64 angularjs pug

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

input(type='text', ng-model='inputText', side='30', placeholder='enter username')
Run Code Online (Sandbox Code Playgroud)

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

Wag*_*sco 125

您可以使用控制器中的变量进行绑定:

<input type="text" ng-model="inputText" placeholder="{{somePlaceholder}}" />
Run Code Online (Sandbox Code Playgroud)

在控制器中:

$scope.somePlaceholder = 'abc';
Run Code Online (Sandbox Code Playgroud)

  • 此外,将无法在IE中工作,抛出错误.推测syle ="{{}}"的理由大概与此相同:https://docs.angularjs.org/guide/ie (7认同)

小智 21

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

<input type="text" ng-model="inputText" ng-attr-placeholder="{{somePlaceholder}}" />
Run Code Online (Sandbox Code Playgroud)

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


Z.T*_*ang 7

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

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

此方法将有助于将ngmodel的逻辑与占位符与控制器分离.如果他们之间没有逻辑,你肯定可以像Wagner Francisco说的那样.


小智 5

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

input(type="text", ng-model="someModel", placeholder="{{someScopeVariable}}")`
Run Code Online (Sandbox Code Playgroud)

在您的控制器中:

$scope.someScopeVariable = 'somevalue'
Run Code Online (Sandbox Code Playgroud)

  • @cpburnz-这似乎是对我回答问题的有效尝试。如果您不喜欢它,则应对其进行投票,而不是将其标记为删除。 (5认同)