#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)
.