2016-06-14 6 views
1

У меня возникли проблемы с попыткой сохранить статус родительского ngForm; он должен быть установлен на «Pristine», когда все его дети будут очищены и настроены на «Принуждение» к себе ... но это, похоже, не происходит автоматически.Родительский ngForm грязный статус, основанный на дочерних формах

Я создал шлепнуть здесь, чтобы лучше объяснить проблему: http://plnkr.co/edit/vCX7ltOb8fgl3fkEpvzy?p=preview

<body ng-controller="MainCtrl"> 

    <div ng-form="parentForm1" class="parent-form"> 
     parentForm1.dirty: <b>{{parentForm1.$dirty}}</b> 

     <form name="childForm1" class="child-form" novalidate> 
     childForm1.dirty: <b>{{childForm1.$dirty}}</b> 
     <br/> 
     <input type="text" ng-model="field1"> 
     <br/> 
     <button ng-click="reset1()">Clean and setPristine</button> 
     </form> 

     <form name="childForm2" class="child-form" novalidate> 
     childForm2.dirty: <b>{{childForm2.$dirty}}</b> 
     <br/> 
     <input type="text" ng-model="field2"> 
     <br/> 
     <button ng-click="reset2()">Clean and setPristine</button> 
     </form> 

    </div> 

    </body> 

Где я ошибаюсь? Я нашел решения с использованием внешних модулей ... Я бы хотел решить это с меньшим количеством кода (возможно, директивой?).

+1

Я думаю, что вы нашли ваш собственный ответ с «угловым вводом-изменением»! Пожалуйста, добавьте решение и отметьте его как ответ, чтобы поделиться им с сообществом. – gsubiran

ответ

0

я нашел свой ответ с "угловым входом модифицированного" здесь обновленное бухнуться: http://plnkr.co/edit/vCX7ltOb8fgl3fkEpvzy?p=preview

HTML:

<!DOCTYPE html> 
<html ng-app="test"> 

<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
    <script src="//rawgit.com/betsol/angular-input-modified/master/dist/angular-input-modified.js"></script> 
    <script src="script.js"></script> 
    <link rel="stylesheet" href="style.css" /> 
</head> 

<body ng-controller="MainCtrl"> 

    <div ng-form="parentForm1" class="parent-form"> 
    parentForm1.dirty: <b>{{parentForm1.$dirty}}</b> 
    <br/> 
    parentForm1.modified: <b>{{parentForm1.modified}}</b> 

    <form name="childForm1" class="child-form" novalidate> 
     childForm1.dirty: <b>{{childForm1.$dirty}}</b> 
     <br/> 
     <input type="text" ng-model="field1"> 
     <br/> 
     <button ng-click="reset1()">Clean and setPristine</button> 
    </form> 

    <form name="childForm2" class="child-form" novalidate> 
     childForm2.dirty: <b>{{childForm2.$dirty}}</b> 
     <br/> 
     <input type="text" ng-model="field2"> 
     <br/> 
     <button ng-click="reset2()">Clean and setPristine</button> 
    </form> 

    </div> 

    <form name="exChildForm1" class="child-form" novalidate> 
    exChildForm1.dirty: <b>{{exChildForm1.$dirty}}</b> 
    <br/> 
    <input type="text" ng-model="exfield1"> 
    <br/> 
    <button ng-click="exreset1()">Clean and setPristine</button> 
    </form> 

</body> 

</html> 

JS:

var app = angular.module('test', ['ngInputModified']); 

app.controller('MainCtrl', function($scope) { 

    $scope.reset1 = function() { 
    $scope.field1 = null; 
    $scope.childForm1.$setPristine(); 
    } 

    $scope.reset2 = function() { 
    $scope.field2 = null; 
    $scope.childForm2.$setPristine(); 
    } 

    $scope.exreset1 = function() { 
    $scope.exfield1 = null; 
    $scope.exChildForm1.$setPristine(); 
    } 

});