@odd-look

Как передать функцию в кастомную директиву из контроллера?

Есть кастомная директива, для которой надо сделать ng-change. Но в контроллер директивы приходит только function (a) {h(c, a). То есть моя функция где то теряется по дороге.

Шаблон
input(
        ng-model="dt"
        ng-change='onChange'
    )


Контроллер директивы
.directive('uiDatepicker', [()->
    obj =
        restrict: 'AE'
        replace: true
        templateUrl: '/partials/datepicker'
        scope:
            dt: '='
            onChange: '&'
        controller: ['$scope', ($scope)->
            console.log $scope.onChange   #function (a) {h(c, a)
        ]
    obj
])


Вот так передаю функцию
ui-datepicker(dt='tenancy.startDate', onChange='test()')


Как увидеть функцию в директиве и заставить ее работать?
  • Вопрос задан
  • 783 просмотра
Решения вопроса 1
@Kano
Для начала у вас не верно задано имя атрибута
ui-datepicker(dt='tenancy.startDate', on-сhange='test()')

Если вы хотите передать именно ту функцию что задали в контроллере, тогда вы выбрали не тот механизм связывания. Вам нужна передача по значению, а не по выражению поэтому используйте передачу по значению в свой изолированный scope
.directive('uiDatepicker', [()->
...
        scope:
            dt: '='
            onChange: '='
])

ui-datepicker(dt='tenancy.startDate', on-сhange='test')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
$scope.onChange(); // тут можно передать контекст. Читать документацию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы