角度1
我已经使用下面的索引来选择结果集中的第一个值(如果尚未选择)。
请参阅下面的“ $ 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 );
}
现在,第一个地址单选按钮将在加载时被选中,但是我的验证未将其检测为选中状态,因此必须再次单击它以进行检查。
是否有一个原因?
谢谢
最佳答案
首先,您的vm.cart.addressId
是不确定的!
仅当您单击单选按钮时,它才会被设置!由于您的ng-click
。
这就是为什么,您应该像这样在控制器的开头对其进行初始化:
vm.cart.addressId = addresses[0].addressId;
希望能帮助到你