验证在页面加载时嵌套在ng-repeat中的输入元素,而不仅仅是在更改时

时间:2016-04-11 13:58:50

标签: javascript angularjs validation

我有一个angularjs页面。我创建了一个自定义指令,以验证嵌套在ng-repeat中的输入元素。现在,验证工作正常,但我还需要它来处理页面加载和页面上发生的更改(例如下拉选中和单击按钮),而不仅仅是当用户更改值时。我还需要添加指令(或验证)以查看此模块上的控制器是否存在过滤器的值。

有什么建议吗?这是我目前的代码:

.directive('myDirective', function() {
    return {
        require: 'ngModel',
        link: function(scope, element, attr, mCtrl) {
            function myValidation(value) {
                mCtrl.$setValidity('charE', false);
                if (value>1){                    
                    mCtrl.$setValidity('charE', true);
                } else {
                    mCtrl.$setValidity('charE', false);
                }
                return value;
            }
            mCtrl.$parsers.push(myValidation);
        }
    };
})

这是我对它的呼唤:

<td align="center">
    <form name="myForm">
        <!--<input name="myInput" ng-model="myInput" required my-directive>-->
        <input type="number" name="myInput" ng-model="item.qtyToOrder" ng-model-options="{ updateOn: 'blur' }" ng-change="SavePO(item.qtyToReOrder, item.qtyToOrder,  {{$index}})" required my-directive/>
        <!--<span>test  - {{myForm.myInput.$valid}}</span>-->
    </form>
</td>

2 个答案:

答案 0 :(得分:0)

也许ngOnInit() {}可以帮助解决您的问题!

请参阅https://angular.io/docs/ts/latest/api/core/OnInit-interface.html

答案 1 :(得分:0)

能够直接在DOM上完成。

 <input  ng-class="{ 'has-error': item.qtyToOrder<=0 && filter.vendor !='' }" type="number" name="myInput" ng-model="item.qtyToOrder" ng-model-options="{ updateOn: 'blur' }" ng-change="SavePO(item.qtyToReOrder, item.qtyToOrder,  {{$index}})" />