вызывать функцию после загрузки директивы - PullRequest
1 голос
/ 25 февраля 2020

Я работаю над пользовательской директивой angular 1.6

Я хочу вызвать функцию после загрузки моей директивы. Есть ли способ добиться этого?

Я попробовал функцию связи, но, похоже, функция связи выполняется до загрузки директивы.

Любая помощь будет оценена.

Это мой код директивы

<pagination total-data= noOfRecords></pagination>
app.directive("pagination", [pagination]);

function pagination() {
    return {
        restrict: 'EA',
        templateUrl: 'template/directives/pagination.html',
        scope: {
            totalData: '=',
        },
        link: dirPaginationControlsLinkFn
    };
}

Ответы [ 3 ]

1 голос
/ 25 февраля 2020

Вы можете добавить часы к totalData в функции ссылки и делать вещи там.

scope.$watch('totalData', function () {
   if (scope.totalData && scope.totalData.length > 0) { //or whatever condition is required
   }
});
1 голос
/ 25 февраля 2020

Поскольку вы используете AngularJS V1.6, подумайте о том, чтобы сделать директиву компонентом:

app.component("pagination", {
    templateUrl: 'template/directives/pagination.html',
    bindings: {
        totalData: '<',
    },
    controller: "paginationCtrl"
})

И использовать хуки жизненного цикла $onChanges и $onInit :

app.controller("paginationCtrl", function() {
    this.$onChanges = function(changesObj) {
        if (changesObj.totalData) {
            console.log(changesObj.totalData.currentValue);               
            console.log(changesObj.totalData.previousValue);                 
            console.log(changesObj.totalData.isFirstChange());
        };
    };
    this.$onInit = function() {
        //Code to execute after component loaded
        //...
    });
});

Компоненты - это директивы, структурированные таким образом, что их можно автоматически обновить до Angular 2+ компонентов. Они облегчают переход на Angular 2+.

Для получения дополнительной информации см.

0 голосов
/ 25 февраля 2020

Вы можете попробовать вызвать вашу функцию внутри $onInit() или внутри $postLink() документы могут помочь

...