在ng-repeat中选择第一个单选按钮,验证

时间:2016-08-22 14:21:16

标签: javascript angularjs validation angularjs-ng-repeat

Angular1

我已经使用下面的索引来选择结果集中的第一个值(如果它尚未被选中)。

请参阅

下方的“ $ index == 0?true:false

HTML

<li ng-repeat="address in addresses | filter:vm.addressSearch">
<div class="checkbox">
    <input type="radio" name="address-list" id="address-{{address.addressId}}"
        ng-click="vm.setAddress( address.addressId )"
        ng-checked="address.addressId === vm.cart.addressId || $index==0?true:false">
</div>

JS验证

vm.setAddress = function( addressId ) {
        vm.cart.addressId = addressId;
        updateShippingValid();
};

function updateShippingValid() {
        vm.shippingValid = angular.isNumber( vm.cart.addressId ) && ( vm.cart.addressId !== 0 ) && angular.isString( vm.cart.shipMethod );
}

现在第一个地址单选按钮将在加载时被选中,但我的验证没有将其检测为已选中,必须再次单击才能通过。

这是否有原因?

由于

1 个答案:

答案 0 :(得分:1)

首先,您的vm.cart.addressId未定义!

只有当您单击单选按钮时才会设置!因为你的ng-click

这就是为什么,你应该在控制器的开头初始化它,如下所示:

vm.cart.addressId = addresses[0].addressId;

希望有所帮助