Diretiva AngularJS com método chamado de fora
Eu criei uma diretiva com um método que deve ser chamado de outros elementos que não fazem parte da diretiva. No entanto, parece que esse método não está exposto.
Alguns exemplos de código jade para esclarecer:
//- 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)
osomeController
não é muito importante aqui, eu acho. Possui métodos, mas NÃO omethodFromDirective(element)
1. omethodFromDirective(element)
é um método que existe apenas na diretiva.
Se eu criar uma diretiva e colocar alguns logs na criação, posso ver claramente que ela foi criada. No entanto, omethodFromDirective(element)
O método não é exposto para que as chamadas não sejam acionadas corretamente.
omethodFromDirective(element)
em si só funcionará em elementos de dentro do modelo da diretiva.
algum coffeescript para mostrar a definição da diretiva (ignore os erros de indentação aqui):
'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)