【发布时间】:2015-01-12 19:18:10
【问题描述】:
我有一个级联选择,第二个下拉列表基于第一个下拉选择出现。出现一个额外的空白选项,这不是下拉菜单预期行为的一部分。
<select ng-init="order.attempt_status_sub = order.attempt_status_sub || subStatuses[0].name"
data-ng-model="order.attempt_status_sub" ng-options="subStatus.name as
subStatus.name for subStatus in subStatuses">
</select>
如何避免空的额外选择出现在下拉列表中?
我的级联下拉菜单的代码是
<div class="form-group" ng-class="{ 'has-error' : submitted && orderForm.content.$invalid}">
<div class="controls">
<select ng-change="getSubStatuses(order.attempt_status)" data-ng-model="order.attempt_status" ng-options="status.name as status.name for status in statuses">
</select>
</div>
</div>
<div class="form-group" ng-show="subStatuses.length" ng-class="{ 'has-error' : submitted && orderForm.content.$invalid}">
<div class="controls">
<select ng-init="order.attempt_status_sub = order.attempt_status_sub || subStatuses[0].name" data-ng-model="order.attempt_status_sub" ng-options="subStatus.name as subStatus.name for subStatus in subStatuses">
</select>
</div>
</div>
$scope.getSubStatuses = function(attempt_status) {
var statuses = $scope.statuses;
for(var index in statuses) {
if(statuses[index].name === attempt_status) {
if(statuses[index].children) {
$scope.subStatuses = statuses[index].children;
} else {
$scope.subStatuses = [];
}
break;
}
}
};
【问题讨论】:
-
您的模型
subStatuses是否异步绑定? -
@JonathanPalumbo OP 已经在 ng-init 中执行此操作。我不认为它是重复的
-
@PSL 在 subStatuses 异步更改后会再次调用
ng-init吗?如果没有 plunker,我无法确定,但我猜ng-init分配只会运行一次,因此在进行父选择后,子选择的模型仍然无效。我也不能确定。 -
@JonathanPalumbo 不会。 ng-init 不应该用于这些。是的,这是 ng-init 滥用.. :)
-
是的,在我被咬之前,我一直在滥用它。虽然我认为症状是重复的。原因不同。
标签: javascript angularjs angularjs-scope angularjs-ng-model angularjs-ng-options