Dyrektywa AngularJS z metodą wywoływaną z zewnątrz
Stworzyłem dyrektywę z metodą, która powinna być wywoływana z innych elementów, które nie są częścią dyrektywy. Wygląda jednak na to, że ta metoda nie jest widoczna.
Przykładowy kod jade, aby wyjaśnić:
//- 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)
ThesomeController
nie jest tu zbyt ważne. Ma metody, ale NIEmethodFromDirective(element)
jeden. ThemethodFromDirective(element)
jest metodą, która istnieje tylko w dyrektywie.
Jeśli zrobię dyrektywę i zaloguję się do tworzenia, wyraźnie widzę, że jest tworzona. JednakżemethodFromDirective(element)
metoda nie jest widoczna, więc wywołania nie są prawidłowo uruchamiane.
ThemethodFromDirective(element)
sam będzie działał tylko na elementach z szablonu dyrektywy.
jakiś coffeescript, aby pokazać definicję dyrektywy (tutaj ignoruj błędy wcięcia):
'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)