如何$ setdirty到单个输入

时间:2015-04-15 13:44:24

标签: javascript html angularjs angular-ngmodel angularjs-ng-init

我有一点问题。我想设置脏一个输入,我的意思是,因为当我自动给出一个值时,它会保留在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,请帮助我。

3 个答案:

答案 0 :(得分:6)

http://plnkr.co/edit/bVoljJqiK3CLB2xqZ6Zm?p=preview

你可以在那里看到一个有效的例子。

确保为表单和输入设置名称attr。

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";
}

答案 1 :(得分:0)

$scope.$on('$viewContentLoaded'){
 $scope.form.fieldName.$dirty = true;
 }

加载视图后,将调用angular调用viewContentLoaded事件。之后,您可以将字段设置为脏。而且如果你想调用一些方法,那应该在加载内容之后执行,而不是在$scope.$on('$viewContentLoaded'){..}

中调用该方法

答案 2 :(得分:-3)

这应该做的工作

angular.element(document.querySelector('form')).scope().formname.fieldname.$setDirty()