我正在尝试从控制器更改输入占位符的值,但无法弄清楚如何。
input(type='text', ng-model='inputText', side='30', placeholder='enter username')
有没有办法修改模型的元素属性?
您可以绑定控制器中的变量:
<input type="text" ng-model="inputText" placeholder="{{somePlaceholder}}" />
在控制器中:
$scope.somePlaceholder = 'abc';
对我来说,接受的答案仍然在 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'