1

我有一些 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 部分紧跟在类型定义之后,我也会不断收到“类型未定义”。

为什么当我尝试 $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. 我相信这就是你的问题所在。另外我不认为 a 的第三个参数$watch$scope.

于 2015-07-21T11:56:17.413 回答