【问题标题】:Angular Radio button set checked to first input角度单选按钮设置检查到第一个输入
【发布时间】:2015-12-10 23:42:58
【问题描述】:

我刚刚构建了一个动态(来自 API 的数据)表单,其中包含一个 ng-repeat 以生成大量单选按钮。它工作正常,但我在设置要检查的第一个单选按钮时遇到了困难。任何人都可以帮忙吗?

<div ng-repeat="carrier in options.shipping.methods">
    <fieldset>
        <input type="radio" id="{{ carrier.slug }}" name="{{ carrier.slug }}" value="{{ carrier.slug }}" ng-model="data.shipping" />
        <label class="radio" for="{{ carrier.slug }}">{{ carrier.description }}</label>
    </fieldset>
</div>

我可以将ng-init 设置为$index == 0 吗?

【问题讨论】:

    标签: javascript angularjs api radio-button angularjs-ng-repeat


    【解决方案1】:

    您应该在需要时使用 ngChecked 将 checked 属性添加到输入中。

    查看link

    <div ng-repeat="carrier in options.shipping.methods">
        <fieldset>
            <input type="radio" id="{{ carrier.slug }}" name="{{ carrier.slug }}" value="{{ carrier.slug }}" ng-model="data.shipping"  ngChecked="carrier.isSelected" />
            <label class="radio" for="{{ carrier.slug }}">{{ carrier.description }}</label>
        </fieldset>
    </div>
    

    在您的控制器中,您将执行类似

    的操作
    $scope.options.shipping.methods[0].isSelected = true;
    

    或者你可以直接在ngChecked里面写check

    ngChecked="carrier.someProperty != null"
    

    【讨论】:

    • 如果它是一个单选按钮列表,这将起作用,但由于它是一个 ng-repeat,并且传递的数据可以是任何随机顺序,所以它不会很好地工作,因为它会放ng-checked 到所有单选按钮上。
    • @Tomaltach in carrier 添加一个布尔属性并将其提供给 ngChecked 然后您可以通过传递 true 来控制应该检查哪一个
    • 是的,应该可以。我弄错了正常的检查属性
    • @Tomaltach 投票并将我的答案标记为正确答案
    猜你喜欢
    • 2020-01-20
    • 2011-04-28
    • 2017-11-16
    • 2020-06-13
    • 1970-01-01
    • 2014-04-16
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多