Javascript AngularJs:如果无法从控制器访问,则在ng内形成
我在Javascript AngularJs:如果无法从控制器访问,则在ng内形成,javascript,angularjs,Javascript,Angularjs,我在ng if指令中有一个表单。我想使用$valid检查控制器中的表单验证 <div ng-if="paymentMethod == 12"> <form name="creditForm" id="cc-form" novalidate> <div class="form-group"> <label for="cardNumber">Card Number</label>
ng if
指令中有一个表单。我想使用$valid
检查控制器中的表单验证
<div ng-if="paymentMethod == 12">
<form name="creditForm" id="cc-form" novalidate>
<div class="form-group">
<label for="cardNumber">Card Number</label>
<input type="text" autofocus class="form-control" name="card_number" ng-minlength="16" id="cardNumber" ng-model="creditCardNumber" required>
<div class="red-text" ng-messages="creditForm.card_number.$error" ng-if="creditForm.card_number.$dirty || creditForm.$submitted">
<div ng-message="required">##global.Card_Num_Required##</div>
<div ng-message="maxlength">##global.Card_Num_MinLength##</div>
<div ng-message="minlength">##global.Card_Num_MaxLength##</div>
<div ng-message="minlength">##global.Card_Num_Numeric ##</div>
</div>
</div>
但是无法从控制器访问表单。ngIf指令基于{expression}删除或重新创建DOM树的一部分。如果指定给ngIf的表达式的计算结果为假值,则该元素将从DOM中删除,否则将该元素的克隆重新插入DOM。 你可以通过这个链接,也可以在这里找到我的答案
如果可行,可以使用ng show而不是ng。这是因为ngIf创建了一个新范围,因此name=“form”将在该新范围(ctrl范围的子范围)上注册表单控制器。您可以通过绑定到目标范围上的现有对象来解决这个问题。(或者,您可以绑定到控制器并使用controllerAs语法,这通常被认为是一种良好的做法。)
$scope.$watch('creditForm.$valid', function(newVal) {
//$scope.valid = newVal;
alert('valid');
});
这是因为原型继承在JavaScript中是如何工作的
你可以在这里找到一个样品
在控制器中使用辅助对象时,它可以正常工作 在控制器文件中
$scope.page = {
creditForm:null
};
在HTML文件中
<div ng-if="paymentMethod == 12">
<ng-form name="page.creditForm" id="cc-form" novalidate>
<div class="form-group">
<label for="cardNumber">Card Number</label>
<input type="text" autofocus class="form-control" name="card_number" ng-minlength="16" id="cardNumber" ng-model="creditCardNumber" required>
<div class="red-text" ng-messages="page.creditForm.card_number.$error" ng-if="page.creditForm.card_number.$dirty || page.creditForm.$submitted">
<div ng-message="required">##global.Card_Num_Required##</div>
<div ng-message="maxlength">##global.Card_Num_MinLength##</div>
<div ng-message="minlength">##global.Card_Num_MaxLength##</div>
<div ng-message="minlength">##global.Card_Num_Numeric ##</div>
</div>
</div>
</ng-form>
卡号
##global.Card_Num_必填项##
##global.Card\u Num\u MinLength##
##global.Card\u Num\u MaxLength##
##global.Card\u Num\u Numeric##
在此模型中,如果尝试删除
$parent
,您可以在ng中安全地使用ng表单?
<div ng-if="paymentMethod == 12">
<ng-form name="page.creditForm" id="cc-form" novalidate>
<div class="form-group">
<label for="cardNumber">Card Number</label>
<input type="text" autofocus class="form-control" name="card_number" ng-minlength="16" id="cardNumber" ng-model="creditCardNumber" required>
<div class="red-text" ng-messages="page.creditForm.card_number.$error" ng-if="page.creditForm.card_number.$dirty || page.creditForm.$submitted">
<div ng-message="required">##global.Card_Num_Required##</div>
<div ng-message="maxlength">##global.Card_Num_MinLength##</div>
<div ng-message="minlength">##global.Card_Num_MaxLength##</div>
<div ng-message="minlength">##global.Card_Num_Numeric ##</div>
</div>
</div>
</ng-form>