2016-07-18 6 views
0

Wie Ereignis Listener-Funktion in angularjs Direktive generieren?Wie Ereignis Listener-Funktion in angularjs Direktive generieren?

Für diese so etwas wie:

Richtlinie:

app.directive('myDirective',() => { 
    return { 
     scope: { 
      myDict: '=', 
     }, 
     templateUrl: 'directives/my-directive', 
    }; 
}); 

HTML:

<!-- my-directive.html --> 

<li ng-repeat="(key, value) in myDict"> 
    <!-- Will not work --> 
    <a onclick="function_written_in_frontend({{key}})">{{value}}</a> 
</li> 

Verwenden Sie es:

<my-directive myDict="{'a': 1, 'b': 2, 'c': 3}"></my-directive> 

Was ich hoffe ist, dass es erzeugen könnten:

<li> 
    <a onclick="function_written_in_frontend('a')">1</a> 
    <a onclick="function_written_in_frontend('b')">2</a> 
    <a onclick="function_written_in_frontend('c')">3</a> 
</li> 

Aber ich kann nicht. Und ng-click könnte hier nicht die Lösung sein.

Danke im Voraus.


Update:

Wenn ich meine Richtlinie wie folgt aktualisiert:

app.directive('myDirective',() => { 
    return { 
     scope: { 
      myDict: '=', 
     }, 
     controller: function ($scope, $element) { 
      $scope.function_written_in_frontend = function(mykey) { 
       console.log(mykey); 
      } 
     }, 
     templateUrl: 'directives/my-directive', 
    }; 
}); 

Und es gibt mir:

{{key}} 
{{key}} 
{{key}} 
{{key}} 
+0

"Aber ich kann nicht"? Was bedeutet das? Auch 'ng-click' ist die bevorzugte Methode zum Hinzufügen von onclick Event-Handlern in AngularJS. –

+0

* "ng-click ist hier vielleicht nicht die Lösung" * ... warum nicht? Was bedeutet 'function_written_in_frontend'? Alles clientseitig inklusive eckig ist das Frontend. Die Verwendung von Inline 'onclick' ist keine bevorzugte Methode, um Ereignisbehandlung in nativen Skripten durchzuführen – charlietfl

+0

Kann ich eine Funktion aufrufen, die in einem anderen Skript geschrieben ist, wie' '? – Adam

Antwort

0

versuchen ng-click statt onclick

<a ng-click="function_written_in_frontend(key)">{{value}}</a> 
Verwandte Themen