2017-04-06 33 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()與支架爲它工作。

相關問題