Angularjs ng-click没有开火,尝试了很多解决方案

时间:2017-04-06 21:04:42

标签: angularjs

我是棱角分明的新人。尝试将ng-click添加到汉堡菜单中。查了很多帖子,没找到合适的解决方案。

https://jsfiddle.net/0b89qxx9/1/

HTML

<div class="left-nav" ng-app="free">
  <div class="menuburger" ng-controller="menuburgerController" ng-click="menubClick" >
     <div class="menuburger-layer"></div>
     <div class="menuburger-layer"></div>
     <div class="menuburger-layer"></div>
  </div>
</div>

JS

var appFree = angular.module('free', []);
appFree.controller('menuburgerController', function($scope) {
  $scope.menubClick = function($scope) {
    alert('menu b clicked !')
  };
});

感谢您的时间!

3 个答案:

答案 0 :(得分:1)

要求点击事件正在调用您应该用括号调用的函数。 NG-点击= “menubClick()”。

答案 1 :(得分:1)

使用此行

<div class="menuburger" ng-controller="menuburger" ng-click="menubClick()" >

ng-click必须使用括号调用menubClick()才能生效。

答案 2 :(得分:1)

现有答案会告诉您如何使其有效,但没有一个能告诉您 为什么

正如您在控制器中定义它一样,

$scope.menubClick = function(){
  // whatever
}

所以,如果你运行console.log($scope.menubClick),这正是你将得到的,函数定义:

function(){// whatever}

函数定义只是可以存储在对象属性中的字符串。在您的情况下,对象是控制器的$scope。但是你不想要函数定义,你想运行这个函数。这就是为什么您需要将()添加到变量&#39; (持有定义的名称):

<... ng-click="menubClick()>

使用函数定义不正确(您实际上可以使用它将此脚本传递给其他对象 而不运行 )。但是你最了解你使用的是什么,所以你得到了预期的结果。

注意:如果你的函数有参数,它们将被正确传递:

$scope.someFunc = function(a,b,c){}
// and, in view

ng-click="someFunc(a,b,c)"