AngularJS-Direktive mit Methode, die von außen aufgerufen wird

Ich habe eine Direktive mit einer Methode erstellt, die aus anderen Elementen aufgerufen werden sollte, die nicht Teil der Direktive sind. Es sieht jedoch so aus, als wäre diese Methode nicht verfügbar.

Einige Beispiele für Jade-Code zur Verdeutlichung:

//- a controller for the view itself
div(ng-controller="someController")

    //- this is part of the view itself, not within the directive
    div(ng-repeat="element in elements") 
        div(ng-click="methodFromDirective(element)") click element {{$index}} to trigger directive

    //- this is the directive
    div(some-directive)

DassomeController ist hier nicht allzu wichtig, denke ich. Es hat Methoden aber NICHT diemethodFromDirective(element) einer. DasmethodFromDirective(element) ist eine Methode, die nur in der Direktive existiert.

Wenn ich eine Direktive erstelle und die Erstellung protokolliere, kann ich deutlich sehen, dass sie erstellt wurde. DiemethodFromDirective(element) Methode ist nicht verfügbar, daher werden die Aufrufe nicht ordnungsgemäß ausgelöst.

DasmethodFromDirective(element) selbst funktioniert nur mit Elementen aus der Vorlage der Direktive.

ein Kaffeeskript, um die Definition der Direktive zu zeigen (ignoriere Einrückungsfehler hier):

'use strict'
define [], () ->

someDirective = () ->
    restrict: 'A'
    scope: {
        show: '='
    }
    transclude: false
    templateUrl: 'someTemplateHere.html'

    controller = ($scope)  ->

       # exposing the method here
       $scope.methodFromDirective(element)->
           $scope.theMethod element

    link = (scope, element, attr) ->

       # this is logged
       console.log "init someDirective"

       # triggering this method form outside fails
       scope.theMethod = (element)->
          console.log "method triggered with element", JSON.stringify(element)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage