我真的不知道如何解释这一点,但我会尽力而为,我也有一个 plunker,所以希望能有所帮助。
http://plnkr.co/edit/mbKvRoXl92f4zPJLxRGJ?p=preview
TLDR 版本:
- 从下拉菜单中选择“abcdefg@yahoo.com”,以满足其所需属性。
- 从“家庭电子邮件”输入字段中删除“abcdefg@yahoo.com”。
- 请注意,下拉菜单不再选择电子邮件,但仍满足其 required 属性。
长卷版本
我所拥有的是一些输入字段,它们与数组($scope.contact.emails)中的对象相关联。然后将包含这些对象的数组绑定到一个选择元素。select 元素有一个 ng-model 指令,包含当前选择的数组中的对象。
当页面加载时,没有选择任何内容,因此绑定到 select 的 ng-model (default_email) 是未定义的,并且“必需”文本显示在 select 元素旁边。
现在需要注意的是,“电子邮件”字段是必需的,但“家庭电子邮件”字段不是必需的。如果我在下拉列表中选择我的“首选电子邮件”是“家庭电子邮件”字段 (abcdefg@yahoo.com) 中的电子邮件,则满足选择要求,并且我的联系人对象中的 default_email 属性分配了由表示的对象该字段(default_email":{"id":"home_email","name":"Home Email","address":"abcdefg@yahoo.com"})
问题来了,如果我现在删除“Home Email”输入框的内容使其为空,则选择更改为“请选择首选电子邮件”,但该对象仍分配给联系人对象中的 default_email 属性,只是现在它缺少属性“地址”,因为它不再满足输入中指定的 type="email" 的要求。真正的问题是我需要显示“必需”标签,但不是。这是由于定义了 default_email,只有分配给它的对象缺少我实际需要的属性,即“地址”。
非常感谢任何帮助,如果更多细节或澄清会有所帮助,请告诉我,对于角度来说真的很新,所以请耐心等待。