2016-11-01 241 views
1

我是這個領域的新人,並且已經嘗試了很長一段時間。你可以在這裏看到我的簡單版本: https://plnkr.co/edit/YeahrG28bT2izX8gMKor?p=preview爲什麼我的onclick不起作用?

你能告訴我爲什麼我的onclick在這裏不起作用嗎?我的按鈕是2signUp botton,謝謝!

JS:

var app = angular.module('myApp', []); 

app.controller('mainControl', function($scope) { 
    $scope.logged = false; 
    $scope.visiter = true; 
    var sub1 = document.getElementsByClassName("haha")[0]; 
    sub1.onclick=function(){ 
    $scope.logged = !$scope.logged; 
    } 
}) 

HTML:

<!DOCTYPE html> 
<html lang="en" ng-app='myApp'> 
<head> 
    <meta charset="utf-8"> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
    <script src="MainViewController.js"></script> 
</head> 
<body ng-controller="mainControl"> 
     <div ng-show="logged"> 
      <button>1Sign Up</button> 
      <button>Log In</button> 
     </div> 
     <div ng-show="visiter"> 
      <button class="haha">2Sign Up</button> 
      <button>Log In</button> 
     </div> 
     <div ng-show="logged"> 
      hello 
     </div> 

</body> 
+0

您正在使用'document.getElementsByClassName( 「哈哈」)[0]''不過是haha' ID。你應該使用'document.getElementById' – Rohit

+1

爲什麼你不使用ng-click功能? – Falk

+1

請參閱@Falk,但也有例外,但通常應避免將Angular與JQuery混合使用。 – Jaco

回答

4

使用的處理click事件的角度來說,不使用任何document.getElementById()爵士當你的角度做的工作適合你。

這就是爲什麼你應該讓角處理它

數據綁定

數據綁定更新視圖的自動方式每當模式的轉變,以及更新模型,只要視圖改變。這很棒,因爲它消除了您必須擔心的事情列表中的DOM操作。

https://angularjs.org/

使用角的ngClick

var app = angular.module('myApp', []); 
 

 
app.controller('mainControl', function($scope) { 
 
    $scope.logged = false; 
 
    $scope.visiter = true; 
 
    $scope.signup = function() { 
 
    $scope.logged = !$scope.logged; 
 
    alert("ran the function"); 
 
    } 
 
})
<!DOCTYPE html> 
 
<html lang="en" ng-app='myApp'> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
    <script src="MainViewController.js"></script> 
 
</head> 
 

 
<body ng-controller="mainControl"> 
 
    <div ng-show="logged"> 
 
    <button>1Sign Up</button> 
 
    <button>Log In</button> 
 
    </div> 
 
    <div ng-show="visiter"> 
 
    <button id="haha" ng-click="signup()">2Sign Up</button> <!-- use ngClick here! --> 
 
    <button>Log In</button> 
 
    </div> 
 
    <div ng-show="logged"> 
 
    hello 
 
    </div> 
 
</body> 
 

 
</html>