2

HTML:

<div ng-controller="TestController" >
    <form name="test_form" ng-submit="submit()">
        <input type="text" name="some_name" ng-model="form_data.some_name" required>

        <ng-form ng-repeat="key in keys" name="keyForm">
            <input type="text" name="data_input" ng-model="form_data.data_input" required>
        </ng-form>  

        <a ng-click="addKey()">NEW KEY</a>
    </form>
</div>

JS:

app.controller('TestController', function TestController($scope){

    $scope.keys = [];

    $scope.addKey = function() {
        $scope.keys.push({});
    }

    $scope.submit = function() {
        console.log($scope);
    }

});

送信関数では、「some_name」入力の値を取得できます。

$scope.submit = function() {
    console.log($scope.form_data.some_name);
}

しかし、「data_input」入力の値を取得できません (ngform タグ内にあります)。どうやってするか?(ngformタグは、新しく追加された各入力を個別に検証する機能に使用されています)

4

1 に答える 1

4

ng-repeat 内の各入力には、独自の一意の ng-model プロパティが必要です。それらはすべて使用できませんform_data.data_input。問題を解決する 1 つの方法を次に示します。

<ng-form ng-repeat="key in keys" name="keyForm">
    <input type="text" name="data_input" ng-model="key.data" required>
</ng-form> 

$scope.addKey = function () {
    $scope.keys.push({ data: ''});
}

フィドル

https://stackoverflow.com/a/14379763/215945も参照してください

于 2013-01-29T16:54:45.530 に答える