Angular $watch 命令选择未定义的变量

Angular $watch command selecting undefined variable

我有一些 HTML 代码,我在其中使用 angular 重复无线电输入。

我创建了一个 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 部分在类型定义之后立即,我仍然得到 "type is undefined" .

为什么当我尝试 $watch 时类型未定义?

edit:问题更深——它来自于 $scope.type.selected.forEach() 不是一个被识别的函数。 forEach() 应该是一个函数,但我错过了什么吗?

你有一堆逻辑错误,这里清理一下:

$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 的第三个参数是 $scope.