2

ng-repeatループがありますprocesses。私がやろうとしているのは、選択ボックスのあるフォームを介してblock現在に新しいものを追加することです。processしかし、私の問題は、コントローラーからループ内のモデルにアクセスできないことです。ng-repeatこれは、新しいスコープがループで作成されるためだと思います。

それでも、コントローラーからモデルにアクセスする方法が見つかりませんでした。問題をよりよく理解するためのhtmlとjavascriptのコード部分を次に示します。

<div class="container" ng-controller="ProcessCtrl">
    <div class="process" ng-repeat="process in processes">
        <form class="form-inline" ng-submit="addBlock($index)">
            <select ng-model="blockType">
                <option value="1">type1</option>
                <option value="2">type2</option>
                <option value="3">type3</option>
            </select>
            <button type="submit">add</button>
        </form>
    </div>
</div>

anglejsコントローラー

function ProcessCtrl($scope, $filter) {
    //...

    $scope.addBlock = function(index) {
        alert($scope.blockType); // undefined
        $scope.processes[index].blocks.push({type: $scope.blockType});
    };
}
4

1 に答える 1

4

はい、問題は、親スコープがng-repeatによって作成された子スコープにアクセスできないことです。

addBlockを変更して、blockTypeも渡します。

ng-submit="addBlock($index, blockType)"
于 2013-01-23T23:43:54.303 に答える