早上好!我对 AngularJS 还是很陌生,并没有找到我可以完全理解的答案。
有一个结构如下:
- 姓名
- 电子邮件
- 颜色[选项红色,选项蓝色]
- 仅当为“颜色”选择选项蓝色时才会出现的必填字段
选择Option Blue时,会出现第二组字段。但是,当取消选择“选项蓝色”时,必填字段再次被隐藏,但表单仍然“看到”该字段为空,直到我单击另一个字段(如“名称”)并输入另一个值。
每次事件侦听器 (?) 触发时都会检查布尔值$form.$valid ,即 onItemSelect 和 onItemDeselect 以及 onSelectionChange。
根据我对 Angular 的了解,我......认为另一个摘要(?)循环尚未开始(?),直到我单击并输入另一个字段?对不起所有的问号 - 我的知识有点脆弱,我不能完全粘贴源代码的原因。
我的理解正确吗?如果是这样,有没有推荐的方法来解决这个问题?
编辑:我在下面添加了一些带有虚拟变量和对象名称的示例代码,以及一些伪代码来总结更大的代码部分。
<script>
var app = angular.module('myApp',[some stuff]);
app.controller('myContropper', function ($scope, $rootScope, $timeout) {
[some variables for scope]
$scope.color = {};
$scope.optionB = {
hue: null;
saturation: null;
};
[some other variables that only have values of OptionB is chosen and subsequent fields are populated]
$scope.colorChange = function() {
if color is changed, clear all associated arrays and values by setting it to either '[];' or 'null;'
};
$scope.checkForm = function() {
if OptionB is not chosen, clear all options related to OptionB
use $scope.form.$valid boolean value and do something with it
};
function onItemSelect(item) {
if OptionB is selected, set the flag for that option to true
$scope.checkForm();
}
function onItemDeselect(item) {
if OptionB is not selected, set the flag for that option to false
$scope.checkForm();
}
}
</script>
我已经设置了一些调试警报。我注意到当我取消选择 OptionBlue 时,警报将包含以下行: requiredFieldifOptionBisChosen: object Object
但是,在单击另一个字段并输入任何值时,表单将刷新(?)有效性,它会说: requiredFieldifOptionBisChosen: null