2016-11-01 11 views
1

私はこの分野で新しく、これを長年試みてきました。あなたは私のシンプルなバージョンをここに見ることができます: https://plnkr.co/edit/YeahrG28bT2izX8gMKor?p=previewなぜ私のonclickが動作しないのですか?

ここで私のonclickが動作しない理由を教えてください。私のボタンは2signUpボトルトンです、ありがとう!

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

あなたは[0] 'document.getElementsByClassNameを( "笑")を使用している'が、 'haha'はIDです。 'document.getElementById'を使うべきです – Rohit

+1

ng-click機能を使わないのはなぜですか? – Falk

+1

@Falkを参照してください。例外もありますが、一般的にはAngularとJQueryを混在させないでください。 – Jaco

答えて

4

はあなたのために仕事をするために、角があるときどんな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>

関連する問題