我有一个<select>
框,其中包含根据模型中另一个字段(另一个<select>
字段)的值从过滤器驱动的选项。如果在过滤列表后,只显示一个选项,我想将其设为选中的选项。 ng-init似乎是一个起点,但Angular团队也建议不要使用它。
选择:
<select
tabindex="5"
class="form-control"
ng-model="vm.transaction.um"
ng-options="um.name for um in vm.ums | measuresForItem:vm.transaction.item">
</select>
答案 0 :(得分:2)
基本上您要做的是根据其他一些模型值(过滤的vm.transaction.um
)更改某个模型值(vm.ums
)。有$watch()
函数可以完成这件事。尝试
$scope.$watch('(vm.ums | measuresForItem:vm.transaction.item).length', function(newVal) {
if (newVal == 1)
$scope.vm.transaction.um = (<get filtered result here>)[0].name;
});
实际上ng-init
对于此类任务并不是那么糟糕,但它只执行一次,并且它可能不适合动态过滤器或任何类型的延迟。
答案 1 :(得分:0)
只需在控制器中设置vm.transaction.um
(您为ng-model指定的成员):
if(this.vm.ums.length === 1) {
this.vm.transaction.um = this.vm.ums[0];
}