javascript - 単一の入力に $setdirty を適用する方法
ちょっとした問題があります。単一の入力をダーティに設定したいんです。というのも、値を自動的に与えると、pristine クラスのまま残り、変わらず、新しい値も保存されないからです。
もしそれを編集すると、動作してクラスが変更されます。私はその pristine クラスをキャンセルしたいです。もし誰か知っているなら教えてください。
<form class="form-horizontal" ng-repeat="studiant in studiants" name="form" id="form">
<input type="hidden" name="id" value="{{studiant.studiant_id}}" class="form-control" disabled>
<div class="form-group">
<label for="school" class="col-md-2 control-label">School</label>
<div class="col-md-1">
<input type="text" id="school" name="school" class="form-control" ng-init="studiant.school=studiant.studiant_school" ng-model="studiant.school">
</div>
</div>
<div class="form-group">
<label for="name" class="col-md-2 control-label">Student's Name</label>
<div class="col-md-10">
<input type="text" id="name" name="name" class="form-control" ng-init="studiant.name=studiant.studiant_name" ng-model="studiant.name">
</div>
</div>
</form>
そしてスクリプト:
document.getElementbyId('name').value = "anything";
あるいは、もし私が間違っていて、valueをng-modelか何かに変える必要がある場合は、助けてください。
回答 #1
http://plnkr.co/edit/bVoljJqiK3CLB2xqZ6Zm?p=preview
そこに動作する例を見ることができます。
フォームと入力に対して name 属性が設定されていることを確認してください。
HTML の例:
<button id="dirty-button" ng-click="addText(); myForm.myText.$setDirty()">Make Dirty</button>
<hr>
<form name="myForm">
<input name="myText" id="myTextInput" type="text" ng-model="myText" required>
</form>
<br/>
<span ng-show="myForm.myText.$dirty">it's dirty now</span>
簡単な関数:
$scope.addText = function() {
$scope.myText = "now I'm dirty";
}
回答 #2
$scope.$on('$viewContentLoaded'){
$scope.form.fieldName.$dirty = true;
}
ビューが読み込まれると、Angular は viewContentLoaded イベントを呼び出します。その後、フィールドをダーティに設定できます。また、コンテンツが読み込まれた後に実行されるメソッドを呼び出したい場合は、そのメソッドをこの $scope.$on('$viewContentLoaded'){..} 内で呼び出す必要があります。
