フォームには正常に機能する送信ボタンがあります。しかし、私はページの右上のフォームの外に座っているクリアボタンからフォームデータをクリアする必要があります。クリアボタンは、親コントローラ内に存在し、フォームの右上のヘッダーにあります。クリアボタンから送信されるフォームは、常に未定義となります。これは、クリアボタンがフォームの一部ではないためです。angularjs - フォームの外側にある外側のクリアボタンからフォームデータを消去する方法
フォームの同じインスタンスをクリアするにはどうすればよいですか?データをクリアするにはどうすればいいですか?これが設計上の問題であれば、まだ回避策が必要です。
私はそれを模倣するために作成したフィドルです。どんな助けもありがとう。
https://jsfiddle.net/SobDan/vj67rtb2/
<div ng-app>
<div class="col-md-10">
<h2>Todo</h2></div>
<div class="col-md-2">
<button class="btn pull-right" ng-click="clear(TodoForm)"> Close</button>
</div>
<br>
<div ng-controller="TodoCtrl">
<form name="TodoForm" ng-submit="addTodo()" name="testForm">
<input type="text" ng-model="todoText" size="30" placeholder="add new todo here">
<input class="btn-primary" type="submit" value="add">
</form>
</div>
function MainCtrl($scope) {
$scope.clear = function(form) {
alert(form); // the form is undefined
if (form.$dirty)
form.setPristine(); // clean this form
else
alert("form not dirty");
};
};
function TodoCtrl($scope) {
$scope.todoText = "test";
$scope.addTodo = function() {
alert("Submitted");
$scope.todoText = "";
// submit logic works fine
};
}
は、他のコントローラ以来の$ scope' 'から放送することができ$スコープ変数をクリア1.0.xのでは
を1.0.xのように構成されているように見えます子供である – charlietfl
kalyanは、$ setPristineを使用してフォームを使用してすべてのfeildをクリアすることができます –