5

我正在尝试使用单选按钮在 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/

首先十分感谢!

4

2 回答 2

7

选择与值中定义的字符串匹配,因此您可以这样做

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"
于 2013-08-29T18:27:08.357 回答
1

您是否已经尝试过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>
于 2016-05-10T18:16:51.453 回答