【问题标题】:How to know if my radio button is checked? AngularJS如何知道我的单选按钮是否被选中? AngularJS
【发布时间】:2014-11-05 13:45:06
【问题描述】:

伙计们,我做了一个代码来了解我的复选框是否被选中并且工作正常:

HTML:

<div ng-app>
    <div ng-controller="UserController">
        <table id="tblUsers" class="Table">
            <thead>
                <tr>
                    <th></th>
                    <th>Name</th>
                    <th>Last Name</th>
                    <th>Phone</th>
                </tr>
                <tr ng-repeat="user in users">

                    <td><input type="checkbox" ng-model="user.checked"/></td>
                    <td>{{user.name}}</td>
                    <td>{{user.lastName}}</td>
                    <td>{{user.phone}}</td>
                </tr>
        </table>

     </div>   
</div>

这是 Angularjs 代码:

function UserController($scope) {
    $scope.users = [
        { checked: false, name: 'Jorge', lastName: 'Martinez', phone: 012345 },
        { checked: false, name: 'Juan', lastName: 'Perez', phone: 78964 }
    ];

    $scope.updateUser = function () {
        angular.forEach($scope.users, function (user) {
            if (user.checked) {
                user.name = $scope.nameUpdate;
                user.lastName = $scope.lastNameUpdate;
                user.phone = $scope.phoneUpdate;
            }
        });
    };
}

问题是当我更改单选按钮的复选框时:

<td><input type="radio" ng-model="user.checked"/></td>

当我这样做时,这个值“if(user.checked)”显示为“未定义”。 有人知道如何解决此问题或如何知道 AngularJS 控制器中是否选中了单选按钮。

【问题讨论】:

    标签: html angularjs checkbox radio-button


    【解决方案1】:

    https://docs.angularjs.org/api/ng/input/input%5Bradio%5D

    你会想要有多个单选按钮,每个按钮都有自己的值来设置一些属性(虽然这很奇怪,是不是你最好用一个复选框,但如果你有多个值,这就是收音机按钮工作)

    <input type="radio" ng-model="user.checked" ng-value="true" />Yes
    <input type="radio" ng-model="user.checked" ng-value="false" />No
    

    当你只有一个单选按钮时,如果默认没有选中或者你没有ng-value,它将是未定义的,但也只有一个单选按钮,你永远不能取消选择它。

    【讨论】:

    • 问题出现在角度控制器中,当我检查 UI 中的单选按钮并循环用户数组时,属性 user.checked 始终为 false。 if (user.checked) { user.name = $scope.nameUpdate; user.lastName = $scope.lastNameUpdate; user.phone = $scope.phoneUpdate; }
    【解决方案2】:

    你需要给单选按钮一个值。

    <td><input type="radio" ng-model="user.checked" value="true"/></td>
    <td><input type="radio" ng-model="user.checked" value="false"/></td>
    

    Working Fiddle

    【讨论】:

    • 当我这样做时,属性 user.checked 在控制器中始终显示为 false。 if(user.checked) { user.name = $scope.nameUpdate; user.lastName = $scope.lastNameUpdate; user.phone = $scope.phoneUpdate; }
    • 谢谢 Malkus,但我想你不理解我,只是我想知道单选按钮是否被选中,当我点击另一个按钮时我想知道在控制器中.当我单击按钮时,您所做的小提琴没有任何作用。
    • 确实如此,它正在登录控制台。打开您的浏览器控制台,通常是F12 当您的浏览器打开时。如果您没有选择收音机,它将不会记录该用户。否则它会放置值。
    猜你喜欢
    • 2017-01-03
    • 2012-10-22
    • 1970-01-01
    • 2016-01-11
    • 2012-06-18
    • 2020-12-04
    • 2018-11-17
    • 2017-09-14
    相关资源
    最近更新 更多