如何在自定义表单控件上强制执行表单要求和验证,其中所需数据不在常规控件中?
我正在使用一个名为Search and Select的自定义用户控件,可以找到here,虽然很有用,但它缺少一些验证功能。该控件允许用户通过键入文本字段(#1)进行预先搜索,然后修改下拉列表(#2)。当点击下拉列表(#3)中的项目时,它会被选中,导致项目名称也显示在顶部(#4)和在下拉列表中显示旁边的复选标记。
如何强制在此控件上选择了某个项目?我在强制使用require
/ ngRequire
自定义控件时发现的信息包含在内其中的其他控件涉及传播其中一个内部控件的要求 - 例如,使整个Search控件使用其中包含的文本框所需的状态。然而,这将是不准确的 - 文本框中的内容是无关紧要的,并且是否选择了某些内容实际上是关于是否设置了幕后局部变量以及其名称是否显示在原文。
我试图通过要求ngModel和修改ngModel.$isEmpty
来修改指令。但是,这似乎没有任何效果。
link: function (scope, elm, attr, ngModel) {
...
ngModel.$isEmpty = function(value) {
return (!scope.selectedItem || scope.selectedItem === {})
};
...
}
如何强制此字段的必要性基于scope.selectItem
的值?