我是棱角分明的新人。尝试将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 !')
};
});
感谢您的时间!
答案 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)"