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 );
}
现在第一个地址单选按钮将在加载时被选中,但我的验证没有将其检测为已选中,必须再次单击才能通过。
这是否有原因?
由于
答案 0 :(得分:1)
首先,您的vm.cart.addressId
未定义!
只有当您单击单选按钮时才会设置!因为你的ng-click
。
这就是为什么,你应该在控制器的开头初始化它,如下所示:
vm.cart.addressId = addresses[0].addressId;
希望有所帮助