2017-04-06 35 views
1

我是新来的角。尝试添加ng-click到汉堡菜单。查了很多帖子,没有找到合适的解决方案。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 !') 
    }; 
}); 

谢谢您的时间!

+1

您需要更改'NG点击= “menubClick”'到'NG点击= “menubClick()”' – Brian

+0

它的作品!谢谢你们,你们很精彩!@ Brian @Anvesh reddy @ Nawsen –

回答

1

现有的答案告诉你如何使它工作,但没有人告诉你为什么

完全按照你已经在你的控制器定义它,

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

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

function(){// whatever} 

功能定义只是可以存储在对象属性中的字符串。对象,在你的情况下,是控制器的$scope。但是你不想要函数定义,你想运行该函数。这就是为什么你需要添加()的变量(这是拿着定义)名称:

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

使用功能定义不不正确(你实际上可以用它来这个脚本传递给其他对象而不运行它)。但最好你了解你使用的是什么,这样你就能得到预期的结果。

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

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

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

非常感谢!现在我的想法很清楚。 –

1

询问点击事件正在调用一个你应该用圆括号调用的函数。 ng-click =“menubClick()”。

1

使用此行

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

NG-点击必须调用menubClick()与支架为它工作。

相关问题