Directiva AngularJS con método llamado desde el exterior.
Creé una directiva con un método que debería llamarse desde otros elementos que no forman parte de la directiva. Sin embargo, parece que este método no está expuesto.
Algunos ejemplos de código de jade para aclarar:
//- 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)
lossomeController
No es demasiado importante aquí, creo. Tiene métodos pero NO elmethodFromDirective(element)
uno. losmethodFromDirective(element)
Es un método que existe solo en la directiva.
Si hago una directiva y pongo algo de registro en la creación, puedo ver claramente que está creado. Sin embargo, elmethodFromDirective(element)
El método no está expuesto, por lo que las llamadas no se activan correctamente.
losmethodFromDirective(element)
en sí mismo solo funcionará en elementos dentro de la plantilla de la directiva.
Algunos coffeescript para mostrar la definición de la directiva (ignorar los errores de sangrado aquí):
'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)