【问题标题】:Bootstrap dropdown disappears after clicking it引导下拉菜单在单击后消失
【发布时间】:2016-08-24 15:29:43
【问题描述】:
<div class="container" ng-controller="serviceHistoryController">
    <!-- Search box Start -->
    <div class="dropdown col-xs-8">
          <button class="btn btn-default col-xs-4" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="false" aria-expanded="true">
            Select SUT
            <span class="caret"></span>
          </button>
          <ul class="dropdown-menu col-xs-8" aria-labelledby="dropdownMenu1">
            <li ng-repeat="sutname in sutlist">
                  <a href="#" ng-click="sutselected(sutname)">
                      {{sutname.name}}
                  </a>
            </li>
          </ul>
    </div>
</div>

上面是我正在使用的引导 + 角度下拉代码。但是,一旦我单击下拉列表,它就会消失。我正在使用 angular1 + boostrap 3.3.7 和 jquery 1.12.4 库。没有使用其他脚本或js。

下面是角度函数

app.controller("serviceHistoryController",function($scope){    
    let menuitems = [{"sutid":"1","name":"AA"},
                    {"sutid":"2","name":"BB"},
                    {"sutid":"3","name":"CC"},
                    {"sutid":"4","name":"DD"},
                    {"sutid":"4","name":"EE"}]
    $scope.sutlist = menuitems;
    $scope.selectedSUT;

    $scope.sutselected = function(sutname){
        $scope.selectedSUT = sutname;
        alert("dropdown sut selected:"+$scope.selectedSUT.name);
    }   
});

【问题讨论】:

  • 您的代码中有错字 => aria-haspopup="flase" 。它必须是 false 而不是 flase
  • 公开你选择的角度函数
  • @Aravind 请检查更新的问题
  • 您的问题是您使用的是 jQuery 和 Boostrap。删除两者并使用 Bootstrap UI。您正在考虑 jQuery 而不是 Angular。
  • @dfsq 我是 angualr 引导程序的新手,建议我使用 angular-ui.github.io/bootstrap 吗?

标签: javascript jquery css angularjs twitter-bootstrap


【解决方案1】:

问题在于您的数据类型使用var查看修改后的控制器。

app.controller("serviceHistoryController",function($scope){    
    var menuitems = [{"sutid":"1","name":"AA"},
                    {"sutid":"2","name":"BB"},
                    {"sutid":"3","name":"CC"},
                    {"sutid":"4","name":"DD"},
                    {"sutid":"4","name":"EE"}]
    $scope.sutlist = menuitems;
    $scope.selectedSUT;

    $scope.sutselected = function(sutname){
        $scope.selectedSUT = sutname;
        alert("dropdown sut selected:"+$scope.selectedSUT.name);
    }   
});

【讨论】:

  • 我有上面的测试,没有运气。 let 也是 es6 的有效数据类型。
【解决方案2】:

请看

var app = angular.module('main', []);
app.controller("serviceHistoryController",function($scope){    
    var menuitems = [{"sutid":"1","name":"AA"},
                    {"sutid":"2","name":"BB"},
                    {"sutid":"3","name":"CC"},
                    {"sutid":"4","name":"DD"},
                    {"sutid":"4","name":"EE"}]
    $scope.sutlist = menuitems;
    $scope.selectedSUT;

    $scope.sutselected = function(sutname){
        $scope.selectedSUT = sutname;
        alert("dropdown sut selected:"+$scope.selectedSUT.name);
    }   
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" ></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="main" class="container" ng-controller="serviceHistoryController">
   Normal :  <select>
      <option>select</option>
  <option ng-repeat="sutname in sutlist">  {{sutname.name}}</option>
   </select>
  <br/>  <br/>
    <!-- Search box Start -->
    <div class="dropdown col-xs-8">
         Bootstrap <button class="btn btn-default col-xs-4" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="flase" aria-expanded="true">
           Click Here
            <span class="caret"></span>
          </button>
          <ul class="dropdown-menu col-xs-8" aria-labelledby="dropdownMenu1">
            <li ng-repeat="sutname in sutlist">
                  <a href="#" ng-click="sutselected(sutname)">
                      {{sutname.name}}
                  </a>
            </li>
          </ul>
      
      
    </div>
</div>

【讨论】:

  • 在引导下拉菜单中的作用类似于按钮,请参阅getbootstrap.com/components/#dropdowns
  • :( 奇怪,我不明白为什么它不适合我。这是我正在使用的应用程序模块 - let mockapp = angular.module("mockapp",['ngSanitize',' ngRoute','ngMessages','ctrlModule']); ,现在我也在尝试使用 ui-bootstrap
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
相关资源
最近更新 更多