2014-12-16 1 views
17

Ok, sono stato bloccato qui per un po ', e io sono sicuro che è qualcosa di relativamente mutong-click angolare non funziona in div

http://plnkr.co/edit/YcBnbE5VCU5rizkDWreS?p=preview

<head> 
    <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css" rel="stylesheet" type="text/css" /> 
    <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet" type="text/css" /> 
    <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.0.3/angular.min.js"></script> 

    <script > 
     function myCtrl($scope, $window) { 
      $scope.vm = {}; 
      $scope.vm.Courses = [ 
       { Id: 1, Name: "Course 1"}, 
       { Id: 2, Name: "Course 2"} 
       ]; 
      $scope.OpenCourse = function(courseId) { 
       $window.alert("Called " + courseId); 
      } 
     } 
    </script> 
</head> 
<body ng-controller="myCtrl"> 
    <div> 
     <div ng-repeat="course in vm.Courses" ng-click="vm.OpenCourse(course.Id)"> 
      <div> 
       <div> 
        <label>{{course.Name}}</label> 
       </div> 
      </div> 
     </div> 
    </div> 
</body> 

Perché non è ñg- clicca qui per sparare? Sembra che questa domanda sia posta molto, ma nessuna delle risposte sembra aiutare. Sembra anche che spostare il div-out della ripetizione lo faccia funzionare, ma ancora una volta, non sono sicuro del perché.

Grazie

risposta

18

Rimuovere vm.

Risultato:

<div ng-repeat="course in vm.Courses" ng-click="OpenCourse(course.Id)"> 

Perché ?, perché tutto si imposta $scope diventa disponibile sul parziale, poi basta chiamarlo.

7

La mancanza di "vm" di fronte OpenCourse (course.Id) era in realtà un errore di battitura da parte mia durante la creazione del plunker. Ho contrassegnato una risposta come corretta, poiché ha fatto funzionare il plunker, ma il mio problema non era questo. Risultò che avevo una classe assegnata al div esterno che stava cambiando lo z-index, mettendo quel div "dietro" gli altri e non permettendo al click di propagarsi.

+0

Ho avuto un problema simile in cui il pulsante era all'interno di un

+1

Deseleziona l'altra risposta se in realtà non ti risponde. – idmean

+5

Ha risposto alla domanda. Il problema era che la mia domanda non esprimeva correttamente il mio problema –

2

Se si utilizza <label> si potrebbe verificare un comportamento strano quando si fa clic su di esso. Prova a cambiarlo in qualcos'altro, se possibile, e testare nuovamente il codice.