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)