AngularJS - Проверить, является ли функция привязки компонента функцией - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь проверить привязки моих компонентов. Как вы знаете, для привязки функции вы должны использовать символ '&'.

<pipeline-list-item
    item="item"
    is-selected="item === $ctrl.selectedItem"
    on-action="">
</pipeline-list-item>

.component('pipelineListItem', {
    restrict: 'E',
    bindings: {
        onAction: '&'
    },
    template: require('./pipeline-list-item.html'),

    controller($scope, RESULTS_TABS, SESSION_ACTIONS, SESSION_STATUSES, ACTIONS, Logger) {
        var that = this;

        that.actionClicked = function ($event, action) {
            $event.stopPropagation();
            $event.preventDefault();
            if (typeof that.onAction === 'function') {
                console.log(that.onAction);
                that.onAction({item: that.item, action});
            }
            else {
                Logger.error({
                    method_name: 'pipelineListItem.actionClicked.',
                    message: 'onAction function was not given to component.'
                });
            }
        };
    }

Поскольку '&' char AngularJS оборачивает функцию другой функцией, что заставляет typeof === 'function' возвращать true.

Функция, которую я получил.

Спасибо, Итай.

1 Ответ

0 голосов
/ 04 сентября 2018

Вы должны добавить '?' к вашей привязке, так что '&?' это ответ.

Теперь вы можете проверить это с помощью "if (that.onAction) {that.onAction ()}".

Веселись!

Если вы не добавите '?', Вы все равно можете это сделать. OnAction (). Если функция пройдена, она вызовет ее. Если ничего не передано, будет вызвана пустая функция.

...