2016-01-28 70 views
0

我已經設置的數據字段的後場驗證。 他們看起來像這樣:AngularJS觸發形式加載

// Read-Only 
<div class="field-group" ng-if="feature.edit == false"> 
    <div class="label" ng-class="{'feature-required': field.Validations.Required === true}">{{field.Label}}</div> 
    <div class="value">{{field.Value}}</div> 
</div> 


// Editor 
<div class="field-group" ng-show="feature.edit == true"> 
    <label for="F{{field.FieldID}}"> 
     <span ng-class="{'feature-required': field.Validations.Required === true, 'feature-notrequired': field.Validations.Required === false}">{{field.Label}}</span> 

     <input type="text" 
       id="F{{field.FieldID}}" 
       name="F{{field.FieldID}}" 
       ng-change="onFieldUpdate()" 
       ng-model="field.Value" 
       jd-field-attributes attr-field="field" 
       jd-validate on-error="onFieldError" 
       field="field"> 
    </label> 

</div> 

feature.edit通過按鈕控制,你可以有數據向只讀或可編輯。每個字段都有一些驗證,通常,如果需要,它必須不同於空。 我想單擊編輯和輸入字段後,觸發驗證。 一種方式來做到這一點是遍歷所有輸入字段和使用jQuery 觸發(「變」)。我必須做一些延遲(它需要Angular來填充所有字段)。 有什麼辦法來觸發NG-變化或運行onFieldUpdate(),該輸入變得可見後? 我試過ng-init,但它沒有工作。

+0

您是否嘗試過使用實際

和檢查$質樸,$髒等? – mhodges

+0

你也可以綁定你的驗證類邏輯來包含你的feature.edit標誌。這可能是你在找什麼:(field.Validations.Required ===真&& feature.edit ==真) – mhodges

+1

你爲什麼不使用的角度標準驗證指令:要求NG-需要,等等。 ? –

回答

0

則可以將驗證邏輯移到定製驗證在ngModel $validators管道。添加到此管道的功能將在每次更改時根據輸入模型值進行評估,並自動將相關的有效/無效類添加到輸入中。

這裏是你如何可以添加自定義驗證的例子:

app.directive('moreValidation', function() { 
    return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function(scope, element, attributes, ngModel) { 
     ngModel.$validators.first = function(input) { 
     return true; // add your custom logic here 
     } 

     ngModel.$validators.second = function(input) { 
     return true; 
     } 

     ngModel.$validators.third = function(input) { 
     return true; 
     } 
    } 
    }; 
}); 

// markup 
<input type="text" ng-model="modelObject" more-validation /> 

這裏有一個小的工作plnkr例如:http://plnkr.co/edit/mKKuhNqcnGXQ4sMePrym?p=preview