【发布时间】:2014-09-12 21:04:46
【问题描述】:
我有两个基于通用数据集“选项”的级联下拉菜单。第一个选择的值过滤第二个选择中可用的选项。
<label for="select1" class="control-label">Select1</label>
<select name="select1" ng-model="select1" ng-options="option.select1 as option.select1 for option in options | unique: 'select1' | orderBy: 'select1'">
</select>
<label for="select2" class="control-label">Select2</label>
<select name="select2" ng-model="select2" ng-options="option.select2 as option.select2 for option in options | filter: {select1: select1} | unique: 'select2' | orderBy: 'select2'">
</select>
当用户更改 select1 中的值时,已在 select2 中选择的值可能仍然可用,也可能不可用。当 select2 中的值变得未知时,通过在 select 中选择未知(“?”) val 来反映这一点,但它不会更改模型。
问题是我不知道如何确定何时选择了无效值。我想将其设置为 null 或至少知道该值无效。
我在jsfiddle 中放了一个这种行为的例子
我尝试创建一个指令来监听视图值的变化,并在“?”时将模型更改为空。被选中,但当 angular 将视图设置为未知值时不会触发更改事件。
.directive('known', function() {
return {
restrict: 'AC',
require: ['select', '?ngModel'],
link: function ($scope, $element, $attrs, ctrls) {
$element.change(ctrls, function() {
if ($element.val() == "?")
ctrls[1].$setViewValue(null);
});
}
};
})
感谢您的宝贵时间
编辑:
我可能会过度简化我的问题:通常有 5 个级联选择相互绑定。 Select(n+2) 取决于 select(n+1) 和 select(n)。 Select(n) 不知道依赖于他的选择,例如 select(n+1, n+2, ...)。表单是基于超级用户创建的表单视图模型动态生成的(类似于https://github.com/Selmanh/angularjs-form-builder)。
所以在我的用例中,如果我能从 select2 的角度判断该值是否无效,可能会更容易。
【问题讨论】:
标签: angularjs