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
.
我有一些 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
.