从控制器角度访问表单

时间:2015-11-02 09:23:07

标签: angularjs

*这不是问题,我分享解决方案*

我需要从我的控制器访问我的FORM来验证一些输入值(例如,ISO代码应该在我的ISO代码列表中...)

问题不在于如何有效或检查表单或输入,而是如何访问表单属性($ valid / $ error等),而不是输入值(使用ng-model)

<form autocomplete="off" name="formLocalisation">
      <input type="text" placeholder='countrycode'
               class="form-control input-md"
               ng-minlength="2" ng-maxlength="3" name="countrycode"
               ng-change="validLocalisationField('countrycode')"
               ng-model="countrycode" />
       <input type="text" placeholder='country name'
               class="form-control input-md"
               ng-minlength="2" ng-maxlength="3" name="countryname"
               ng-change="validLocalisationField('countryname')"
               ng-model="countryname" />
</form>

2 个答案:

答案 0 :(得分:0)

实际上还有另一种不使用$ parent的方式:

numkMGHzVs%-.

你只需要初始化表单:

<form  autocomplete="off" name="formLocalisation">
    <input type="text" placeholder='Code ISO'
        class="form-control input-md"
        ng-minlength="2" ng-maxlength="3" name="countrycode"
        ng-blur="validLocalisationField(this)"
        ng-model="specimen.countrycode" />
</form>

答案 1 :(得分:0)

搜索和头痛后,我分享了一个我找到的解决方案

您需要在表单名称中添加$ parent! :

 $scope.validLocalisationField = function (field) {                         
    if ( .... ) {
        $scope.formLocalisation[field].$setValidity(field+"_valid", false);
    } else {
        $scope.formLocalisation[field].$setValidity(field+"_valid", true);
    }
 };

在控制器中,您可以使用$ scope.formLocalisation访问表单:

var baseUrl = $('base').attr('href');
location.replace(baseUrl + relativeUrl);

source = http://forum.ionicframework.com/t/cant-access-form-on-scope/679/18