2016-11-01 209 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>