2015-11-02 133 views
0

*這不是一個問題,我分享的解決方案*角訪問來自控制器形成

我需要從我的控制器訪問我的形式有效的一些輸入accroding它的值(例如,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> 
+1

那麼什麼是你的問題? – ThisIsMarkSantiago

+0

你爲什麼認爲你的控制器無法訪問表單? – Aakash

+0

我不知道,你想要什麼。 –

回答

0

其實沒有使用$ parent還有另一種方法:

<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> 

你只需要初始化形式:

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

後searchs和頭痛我分享的解決方案,我發現

你需要把$父窗體名稱! :

<form autocomplete="off" name="$parent.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> 

在控制器,你可以訪問到形式$ scope.formLocalisation:

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

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