0

早上好!我对 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

4

0 回答 0