【发布时间】:2013-07-16 19:03:27
【问题描述】:
我正在尝试从控制器更改输入占位符的值,但不知道如何。
input(type='text', ng-model='inputText', side='30', placeholder='enter username')
有没有办法修改模型的元素属性?
【问题讨论】:
我正在尝试从控制器更改输入占位符的值,但不知道如何。
input(type='text', ng-model='inputText', side='30', placeholder='enter username')
有没有办法修改模型的元素属性?
【问题讨论】:
你可以在控制器中绑定一个变量:
<input type="text" ng-model="inputText" placeholder="{{somePlaceholder}}" />
在控制器中:
$scope.somePlaceholder = 'abc';
【讨论】:
ng-attr-*attributeName* 提到的属性使用的 ng-bind 功能ysub
对于我来说,接受的答案仍然在 IE 中引发了 Javascript 错误(至少对于 Angular 1.2)。这是一个错误,但解决方法是使用 https://docs.angularjs.org/guide/interpolation 上详述的 ngAttr
<input type="text" ng-model="inputText" ng-attr-placeholder="{{somePlaceholder}}" />
【讨论】:
由于 AngularJS 不像 jQuery 那样具有指令性 DOM 操作,因此修改一个元素的属性的正确方法是使用指令。 通过指令的链接功能,您可以访问元素及其属性。
将整个输入包装在一个指令中,您仍然可以通过控制器属性引入 ng-model 的方法。
此方法将有助于将 ngmodel 的逻辑与控制器的占位符解耦。 如果他们之间没有逻辑,你绝对可以像瓦格纳弗朗西斯科所说的那样去。
【讨论】:
正如瓦格纳弗朗西斯科所说,(在 JADE 中)
input(type="text", ng-model="someModel", placeholder="{{someScopeVariable}}")`
在你的控制器中:
$scope.someScopeVariable = 'somevalue'
【讨论】: