【问题标题】:Angularjs: radio button checkedAngularjs:选中单选按钮
【发布时间】:2013-09-02 07:38:08
【问题描述】:

我正在尝试使用单选按钮在 AngularJS 中构建一个颜色配置器,一切似乎都在工作,数据绑定等...但是 我无法设置默认颜色单选按钮已选中。正如我在文档中看到的,如果 ng-model 与 radio 值相同,则应自动检查输入,但我不知道这是否仅适用于字符串而不适用于对象。

这是 HTML:

<div ng-app ng-controller="ThingControl">
    <ul >
        <li ng-repeat="color in colors">
            <input type="radio" ng-model="thing.color" value="{{color}}" />{{ color.name }}
        </li>
    </ul>
    Preview: {{ thing }}
</div> 

这是 JS:

function ThingControl($scope){
    $scope.colors = [
        { name: "White", hex: "#ffffff"},
        { name: "Black", hex: "#000000"}
        ]

    $scope.thing = {
        color: $scope.colors[1]
    }

}

你可以在这个小提琴中看到前面的例子: http://jsfiddle.net/xWWwT/1/

提前非常感谢!

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    选择由 Value 中定义的 string 匹配,因此您可以这样做

    value="{{color.name}}"
    
    $scope.thing = {
        color: $scope.colors[1].name
    }
    

    value="{{color}}"
    
    $scope.thing = {
        color: JSON.stringify($scope.colors[1])
    }
    

    正如@bertez 所说,使用ng-value 是最好的解决方案。

    ng-value="color"
    

    【讨论】:

    • 是的,您的解决方案作为值和模型是字符串,但如果我按照您的方式进行操作,我只会将颜色名称绑定到事物对象:( 如您在此处看到的:jsfiddle.net/xWWwT/4
    • @bertez 尝试第二种解决方案。
    • 终于有人在 IRC 中叫 dmco 找到了解决方案:jsfiddle.net/xWWwT/6 使用 ng-价值! :)
    • 为什么例如这也能完美运行,但当 type='radio' 时却不行?
    【解决方案2】:

    您是否已经尝试过 ng-change 指令?您可以使用表达式将其设置为选中,试试这个。

    <div ng-app ng-controller="ThingControl">
    <ul >
        <li ng-repeat="color in colors">
            <input type="radio" ng-model="thing.color" value="{{color}}" ng-checked="$index == 0" />{{ color.name }}
        </li>
    </ul>
    Preview: {{ thing }}
    </div>
    

    【讨论】:

    • 这是唯一对我有用的东西。不是 ng-model 也不是 ng-value。
    猜你喜欢
    • 2017-06-21
    • 2018-05-10
    • 2012-09-17
    • 2016-01-23
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多