【问题标题】:data-toggle="dropdown" activates a route redirect instead of a dropdown in yeomandata-toggle="dropdown" 激活路由重定向而不是 yeoman 中的下拉菜单
【发布时间】:2015-02-05 17:44:43
【问题描述】:

我正在使用angular-bootstrap-datetimepicker,特别是“带输入框的下拉日期时间”。它利用了data-toggle="dropdown"attribute。当我在一个简单的 nodejs express 服务器上运行我的 AngularJS 应用程序时,日历出现了。由于我迁移到 yeoman,单击下拉菜单会激活重定向到 /# (http://localhost:9000/#)

这就是我在视图中使用 datetimepicker 的方式:

dtpform.html

<div class="dropdown">
    <a class="dropdown-toggle" id="dropdown2" role="button" data-toggle="dropdown" data-target="#" href="#">
        <div class="input-group"><input type="text" class="form-control" data-ng-model="startDate"><span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span>
        </div>
    </a>
    <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
        <datetimepicker data-ng-model="startDate" data-datetimepicker-config="{ dropdownSelector: '#dropdown2', minView: 'hour' }"/>
    </ul>
</div>

遇到同样问题的其他人忘记了一些依赖项。我的似乎都准备好了。如果我将 datetimepicker 插入 index.html 而不是 /dtp 路由,它会弹出。

index.html

...
<!-- build:js(.) scripts/vendor.js -->
<!-- bower:js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/bootstrap/dist/js/bootstrap.js"></script>
<script src="bower_components/angular-animate/angular-animate.js"></script>
<script src="bower_components/angular-cookies/angular-cookies.js"></script>
<script src="bower_components/angular-resource/angular-resource.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="bower_components/angular-sanitize/angular-sanitize.js"></script>
<script src="bower_components/angular-touch/angular-touch.js"></script>
<script src="bower_components/moment/moment.js"></script>
<script src="bower_components/angular-moment/angular-moment.js"></script>
<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
<script src="bower_components/angular-bootstrap-datetimepicker/src/js/datetimepicker.js"></script>
<!-- endbower -->
<!-- endbuild -->
...

app.js

angular
  .module('c2gyoApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch',
    'angularMoment',
    'ui.bootstrap',
    'ui.bootstrap.datetimepicker'
  ])
  .config(function($routeProvider) {
    $routeProvider
      ...
      .when('/dtp', {
        ...
        templateUrl: 'views/dtpform.html',
        ...
      }).
    otherwise({
      redirectTo: '/c2g'
    });
  });
  ...

任何想法是什么导致了这种行为?

【问题讨论】:

    标签: javascript angularjs node.js twitter-bootstrap yeoman


    【解决方案1】:

    href="#" 似乎是问题所在。 href 标签将告诉角度路由器导航到匹配/# 的路由。如果您删除它,下拉菜单应该可以正常打开。

    【讨论】:

    • 无论是否使用#,结果都相同,但仍会被重定向且日历无法打开。
    • 我已经完全按照您在 yeoman 中使用角度生成器所描述的那样尝试了此设置。并在其位于另一条路线(例如/dtp)上时删除href,使其正确弹出,而保留href使其与您一样重定向到/#
    • 我错误地在我的应用程序中的不同文件夹中有两次dtpform.html。我一直在编辑没有被使用的那个,所以什么都没有改变。删除右侧文件上的# 确实修复了它。
    • 这个解决方案奏效了!万分感谢。但这种行为可能是在凉亭更新后突然开始的。可能的原因是什么?有什么想法吗?
    猜你喜欢
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2014-08-30
    相关资源
    最近更新 更多