переопределение метода в function object или методах экземпляра access, который передается директиве в angularjs

#javascript #angularjs

#javascript #angularjs

Вопрос:

нужна помощь с наследованием JavaScript для объекта функции, который передается директиве. вот мой объект directive function, и эта функция передается angular.directive

 function DDDirective (){
           return {
               restrict: 'EA',
               replace: 'true',
               templateUrl: 'template/abstractLazyLoad.html',
               scope:{
                   id:'@idAttr'
               },
               controller:function($scope){
                   $scope.lazyLoad=funclazyLoadprops();
               }
           }
}
function funclazyLoadprops(){
    return {
        showText: "Show Divisional Directors",
        hideText: "Hide Divisional Directors",
        templateName: 'template/dd/main.html'
    }
}

app.directive('ddDirectiveLazy', DDDirective);

app.directive('ddDirectiveEager',DDDirective);
 

для директивы

ddirectiveeager

Я хочу добавить еще несколько свойств в $scope.LazyLoad , пожалуйста, посоветуйте мне, как это сделать. Я пытался использовать наследование прототипа JavaScript, но в функции контроллера я не смог получить доступ к методам экземпляра DDDirective.

Ответ №1:

Вряд ли это предписанный «угловой способ» для этого, но это должно делать то, что вы просите:

 function DDDirective (getProps){
    return function(){
        return {
            restrict: 'EA',
            replace: 'true',
            templateUrl: 'template/abstractLazyLoad.html',
            scope:{
                id:'@idAttr'
            },
            controller:function($scope){
                $scope.lazyLoad = getProps();
            }
        };
    };
}

function funclazyLoadprops(){
    return {
        showText: "Show Divisional Directors",
        hideText: "Hide Divisional Directors",
        templateName: 'template/dd/main.html'
    }
}

function funcEagerLoadprops(){
    var lazyprops = funclazyLoadprops();
    //attach additional properties here
    return lazyprops;
}

app.directive('ddDirectiveLazy', DDDirective(funclazyLoadprops));

app.directive('ddDirectiveEager',DDDirective(funcEagerLoadprops));
 

Комментарии:

1. Вы должны скорее предоставить доступ к $scope , иначе не будет возможности асинхронно загружать свойства из getProps .

2. Вы должны опубликовать более правильный ответ.. У меня не было сил, чтобы

3. Что ж, ваш ответ легко изменить, чтобы учесть это. Измените getProps на scopeAvailable($scope) .