编辑表单时 Angular 和 Bootstrap 单选按钮冲突

Posted

技术标签:

【中文标题】编辑表单时 Angular 和 Bootstrap 单选按钮冲突【英文标题】:Angular and Bootstrap radio buttons conflict When Editing Form 【发布时间】:2016-02-29 14:56:41 【问题描述】:

当我使用以下 html 和 AngularJs 代码编辑用户时,我无法检查自动单选按钮。当我控制台 changeUser 这将返回以下数据

"id":1,"username":"Ramesh","password":"Ramesh1@23","role":"admin","active":"no"。当我加载编辑表单时,我必须自动检查以下代码中的no 单选按钮。

      <div class="portlet-body form">
            <!-- BEGIN FORM-->
            <form class="form-horizontal form-bordered" name="editUserForm" data-ng-submit="userEdit(changeUser)">
                <div class="form-body">
                    <div class="form-group">
                        <label class="control-label col-md-3">Username*</label>
                        <div class="col-md-4">
                            <input class="form-control" type="text" name="userName" data-ng-model="changeUser.username"  value=" changeUser.username " data-ng-pattern="/^[a-z0-9_ .-]5,15$/i" required  />
                            <span style="color:red" class="error" data-ng-show="editUserForm.userName.$error.pattern" >Only letters, integers, and underscores.Minimum 5 characters to maximum 15 characters.</span>
                            <span class="help-block"></span>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="control-label col-md-3">Password*</label>
                        <div class="col-md-4">
                            <input class="form-control"  type="password" name="changePassword" data-ng-model="changeUser.password" value="  changeUser.password" data-ng-pattern="usersPattern.password" required />
                            <span style="color:red" class="error" data-ng-show="editUserForm.changePassword.$error.pattern">Minimum of 8 characters, 1 capital letter,1 lowercase, 1 special-case and 1 numeric.</span>
                            <span class="help-block"></span>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="control-label col-md-3">Action</label>
                        <div class="col-md-4">
                            <div class="radio-list">
                                <label class="radio-inline">
                                    <input type="radio" name="optionsRadios2"  data-ng-model="changeUser.active"  value="yes"/>
                                    Yes
                                </label>
                                <label class="radio-inline">
                                    <input type="radio" name="optionsRadios2" data-ng-model="changerUser.active" value="no"/>
                                    No
                                </label>
                            </div>
                        </div>

                    </div>
                    <div class="form-actions">
                        <div class="row">
                            <div class="col-md-offset-3 col-md-9">
                                <button type="submit" class="btn purple" data-ng-disabled= "editUserForm.$invalid">
                                    <i class="fa fa-check"></i> Edit</button>
                                <button type="button" class="btn red" data-ng-click="cancelEdit()">Cancel</button>
                            </div>
                        </div>
                    </div>
                </div>

            </form>
            <!-- END FORM-->
        </div>
    </div>
</div>

控制器是

   (function ()

"use strict";

function UsersEditController($scope, UserFactory, $http, $location) 
    $scope.$on('$viewContentLoaded', function () 
        App.initAjax(); // initialize core components

    );
    $scope.changeUser = ;
    $scope.changeUser =  UserFactory.get();
    $scope.userEdit =  function(data) 
      $scope.changeUser = data;
        console.log($scope.changeUser);

    ;

    $scope.usersPattern = 
        password: '((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%]).8,20)'

    ;
    $scope.cancelEdit = function() 
        $location.path('users');
    ;




UsersEditController.$inject = ['$scope', 'UserFactory', '$http', '$location'];

  angular.module('books').controller('UsersEditController', UsersEditController);

     )()

【问题讨论】:

同时添加 JS 代码 【参考方案1】:

我猜这就是你的答案(即使没有提供 js 代码:))

https://***.com/a/18446612/552194

您需要添加ng-value 并使用它来代替标准的value

【讨论】:

我更改为 ng-value,但仍然没有选中单选按钮,但是当我执行控制台时返回正确的值。 我认为你需要ng-valueng-model 在上面的代码中,我有 ng-model 和 ng-value 但没有显示选中按钮。 不,在上面的代码中你只有ng-model --- &lt;label class="radio-inline"&gt; &lt;input type="radio" name="optionsRadios2" data-ng-model="changerUser.active" value="no"/&gt; No &lt;/label&gt; 我在一段时间后添加并尝试这个&lt;label class="radio-inline"&gt; &lt;input type="radio" name="optionsRadios2" data-ng-model="changeUser.active" data-ng-value="yes"/&gt; Yes &lt;/label&gt;但这次也没有工作@David

以上是关于编辑表单时 Angular 和 Bootstrap 单选按钮冲突的主要内容,如果未能解决你的问题,请参考以下文章

协调 Angular.js 和 Bootstrap 表单验证样式

使用 resolve angular-bootstrap-ui 时出错

Angular UI Bootstrap - 模态不会在第一次点击时弹出

MVC 4 使用 Bootstrap 编辑模态表单

在模态中编辑现有联系人(bootstrap-ui angular)

使用 Angular JS 在提交时隐藏表单