1

angularを使用して無線入力を繰り返すHTMLコードがあります。

現在持っている機能を示す plunkr を作成しました。

http://plnkr.co/edit/n5OZVlbiwToHsuvGN3QI

繰り返しコードは、トップ レベルのスコープにキャプチャする必要がある変数にバインドされます。($parent.selectedType および $parent.selectedSpecies)

コードは HTML ドキュメントで正しく表示されますが、ng-model からのデータ バインディングは機能しません。

したがって、次のように $scope.$watch コマンドを設定しました。

  $scope.$watch('type.selected', function (newVal, oldVal) {
        $scope.type.selected.forEach(function (typeName) {
            if (typeName === newVal) {
                $scope.selectedType = $scope.type.selected;
            }
        });
    });

typeName 変数の変更を監視し、変更されたら $scope.selectedType をラジオ ボタンで選択したものに設定します。

ただし、このコードを実行しようとすると、 $scope.$watch 部分が型定義の直後にあるにもかかわらず、「型が未定義です」というメッセージが表示され続けます。

$watch しようとすると型が未定義になるのはなぜですか?

編集:問題はより深刻でした-それは、 $scope.type.selected.forEach() が認識される関数ではないという事実に由来します。forEach() は関数である必要がありますが、何か不足していますか?

4

1 に答える 1

1

一連の論理エラーがあります。ここではクリーンアップされています。

$scope.$watch('type.selected', function (newVal, oldVal, $scope) {
    if ($scope.type.selected) {
        angular.forEach($scope.type.selected, function (value, typeName) {
            if (typeName === newVal) {
                $scope.selectedType = $scope.type.selected;
            }
        });
    }
});

ご覧のとおり、 に関数が渡されていforEachます。これがあなたの問題があるところだと思います。$watchまた、 a の 3 番目のパラメーターは ではないと思います$scope

于 2015-07-21T11:56:17.413 に答える