角度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;


希望能帮助到你

09-16 19:13