私はコントローラーから入力プレースホルダーの値を変更しようとしていますが、どうすればよいかわかりません。
input(type='text', ng-model='inputText', side='30', placeholder='enter username')
モデルの要素属性を変更する方法はありますか?
コントローラの変数とバインドできます:
<input type="text" ng-model="inputText" placeholder="{{somePlaceholder}}" />
コントローラー内:
$scope.somePlaceholder = 'abc';
受け入れられた答えは、IEにJavaスクリプトエラーを投げました(少なくともAngular 1.2の場合)。これはバグですが、回避策は https://docs.angularjs.org/guide/interpolation で詳しく説明されているngAttrを使用することです
<input type="text" ng-model="inputText" ng-attr-placeholder="{{somePlaceholder}}" />
AngularJSにはjQueryのようにディレクティブDOM操作がないため、1つの要素の属性を変更する適切な方法はディレクティブを使用することです。ディレクティブのリンク機能を使用すると、要素とその属性の両方にアクセスできます。
入力全体を1つのディレクティブにラップしても、コントローラープロパティを介してng-modelのメソッドを導入できます。
このメソッドは、ngmodelのロジックをプレースホルダーとコントローラーから分離するのに役立ちます。それらの間に論理がなければ、ワーグナー・フランシスコが言ったように間違いなく行くことができます。
ワーグナーフランシスコが言ったように(JADEで)
input(type="text", ng-model="someModel", placeholder="{{someScopeVariable}}")`
そして、あなたのコントローラーで:
$scope.someScopeVariable = 'somevalue'