我创建了一个嵌套的类别模型。要为产品选择类别,您会看到包含主要类别的下拉列表。当您选择一个时,会在右侧添加一个新的下拉列表,其子类别将与您选择的类别相对应。这将重复,直到达到最后一级。发生这种情况时,$scope.product.category_id
已设置。我想在$scope.product.category_id
为null
时使整个字段集无效。
我一直在使用angular-bootstrap-show-errors进行验证,我尝试将其与ui-utils混合使用自定义函数validate_category()
实现此目标。
这是我使用的HTML:
<span ng-repeat="parent_id in category_dropdown_parents" show-errors="{ skipFormGroupCheck: true }">
<select class="form-control" name="category_id"
ng-init="selected_category[$index] = init_select($index);"
ng-model="selected_category[$index]"
ng-options="category.name for category in (categories | filter : { parent_id: parent_id } : true ) track by category.id "
ng-change="select_category(selected_category[$index], $index)"
ui-validate="'validate_category()'" // added this to work with ui-utils
>
</select>
<span ng-if="$index+1 != category_dropdown_parents.length">/</span>
</span>
这是我的简单验证功能:
$scope.validate_category = function() {
return ( $scope.product.category_id !== null
&& $scope.product.category_id !== undefined);
}
但这不起作用。想法?
编辑:我刚才意识到,问题是ui-validate
上的验证功能是在ng-change
函数之后执行的,所以它永远无法检查{{1更新。
答案 0 :(得分:4)
您的选择正在使用
<?php
system('mysql --user=USER --password=PASSWORD DATABASE< FOLDER/.sql');
?>
但验证功能正在使用
ng-model="selected_category[$index]"
不应该使用
$scope.product.category_id
和
ui-validate="'validate_category($index)'"
答案 1 :(得分:4)
这不是理想的答案,但它是我能得到的最好的答案。对我感到羞耻,这太简单了:
<select class="form-control" name="category_id"
ng-init="selected_category[$index] = init_select($index);"
ng-model="selected_category[$index]"
ng-options="category.name for category in (categories | filter : { parent_id: parent_id } : true ) track by category.id "
ng-change="select_category(selected_category[$index], $index)"
required // !!!
>
</select>
那就是它,只是添加了required
属性。这个问题是因为我没有验证product.category_id
,只是验证所有下拉列表都不是空的。我想我
我们必须依赖select_category()
上的代码。