2016-03-23 11 views
1

Ich möchte eine Funktion ausführen, wenn Sie auf ein Kontrollkästchen klicken, aber nichts passiert.ng-Klick in der Direktive funktioniert nicht

Wenn ich die sendMediaToScreen Funktion in der Verbindung (scope.sendMediaToScreen()) setzen, funktioniert die Funktion, so ist es OK mit dem scope.

.directive('uxEmbedVideo', ['$compile','myURL', function($compile, myURL) { 
    return { 
     restrict: "E", 
     replace: true, 
     scope: { 
      'clientId': '@', 
      'sendMediaToScreen': '&', 
      'rule': '=', 
      'screenActivated' : '=' 
     }, 
     link: function(scope, element, attrs){ 
     }, 
     templateUrl: myURL.getAppViewsPath() + '/partials/embed-video.html' 
    }; 
}]) 

Richtlinie

<ux-embed-video 
    rule="user.rules" 
    screen-activated="room.parameters.screenActivated" 
    send-media-to-screen="roomManager.sendMediaToScreen({ clientId : user.clientId, from: 'producer' })"> 
</ux-embed-video> 

/partials/embed-video.html

<div class="ux-video-admin-controls" ng-if="rule === 'administrator'" > 
    <input ng-if="screenActivated" 
     restrict access="administrator" 
     class="ux-admin-videoToScreen" 
     type="checkbox" 
     ng-click="sendMediaToScreen()" 
     /> 
</div> 
+0

könnten Sie fiddle/plunkr bieten? –

+0

Sie sagen also, 'roomManager.sendMediaToScreen' wird nicht ausgeführt? – dfsq

+0

Wo ist Ihre Bindung innerhalb der Richtlinie? Sie sollten das Element an das click-Ereignis binden. – ShacharW

Antwort

0

Das Problem liegt in der Nutzung Ihrer <ux-embed-video> Richtlinie.

Sie binden das Ergebnis von roomManager.sendMediaToScreen({ clientId : user.clientId, from: 'producer' }) an scope.send-media-to-screen, anstatt einen Callback zu übergeben.

+0

oO ... ok aber kannst du mir ein kleines Beispiel geben, das verstehe ich nicht, danke –

+0

Du scheinst den Zweck der '&' config nicht zu verstehen. Die Art und Weise, wie OP arbeitet, ist absolut korrekt und in Ordnung. Infact Posted Code funktioniert gut, so dass das Problem irgendwo in OP Setting-Projekt ist. Sehen Sie es funktioniert: http://plnkr.co/edit/i7aZEuSMFYHkyqQvn4Dg?p=preview – dfsq

0

Ich weiß nicht, warum, aber die Vorlage Richtlinie wie folgt ersetzt, jetzt funktioniert es

in der Richtlinie:

entfernen -> ersetzen: true,

in der Vorlage

<div class="ux-video-admin-controls" ng-if="rule === 'administrator' && screenActivated" > 
    <input 
     restrict access="administrator" 
     class="ux-admin-videoToScreen" 
     type="checkbox" 
     ng-click="sendMediaToScreen()" 
     /> 
</div> 

Danke

Verwandte Themen