ng-click传递的$event未定义。

15
为什么在 toggleDropdown 函数中传递的 $event 对象是未定义的?
这是来自以下网址的原始代码:http://plnkr.co/edit/koNsQycAAiEmI8jBApS2?p=preview,不过原始代码中没有在按钮标签中定义 toggleDropdown 函数。我这样做是因为在我的计算机上原始代码无法打开下拉菜单。
我使用的是 AngularJS 1.3.2 和 AngularJS Bootstrap 0.11.2。
'use strict';
angular.module('auth').controller('AccountController', function ($scope) {

  $scope.status = {
    isopen: false
  };

  $scope.toggleDropdown = function($event) {
    $event.preventDefault();
    $event.stopPropagation();
    $scope.status.isopen = !$scope.status.isopen;
  };

});

<!-- Single button -->
<div class="btn-group" dropdown is-open="status.isopen">
  <button ng-click="toggleDropdown()" type="button" class="btn btn-primary dropdown-toggle" dropdown-toggle ng-disabled="disabled">
    Button dropdown <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu">
    <li><a href="#">Action</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="#">Something else here</a></li>
    <li class="divider"></li>
    <li><a href="#">Separated link</a></li>
  </ul>
</div>
2个回答

13

您必须明确指定您正在传递$event变量:

<button ng-click="toggleDropdown($event)">

你的意思是什么?在 plunker 中,你指定了传递 $event 的按钮。 - New Dev
当你指定注入位置时,它就会生效。$event是由ng-click注入的伪变量。 - New Dev
在plunker中,实际的切换按钮应用了指令“dropdown-toggle”,这就是为什么它会打开。如果我误解了,请您减少plunker中的代码以说明您的问题? - New Dev
你是否添加了指令定义的 js 文件?你是否将它作为你的应用程序模块的依赖项添加?如果你没有在 plunker 中重现问题,我就没什么可以帮忙的了。如果你遇到不同的问题,建议创建一个不同的问题。 - New Dev
好的,看起来我的angular-bootstra.js已经过时了,因为在我的版本中,dropdownToggle指令设置为:restrict: 'CA',而最新版本则没有... - Pascal
显示剩余3条评论

-2

在我看来,您需要加载jQuery才能获得有意义的事件对象。查看我对您的plunk进行的修改:http://plnkr.co/edit/ZpQuz1?p=preview

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

1
我无法理解为什么你需要jquery。在plunker中,一切都可以正常工作,没有任何问题... - Pascal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接