у меня есть несколько директив angularJS (которые используют одну из угловых версий chart.js)нескольких директив angularJS, которые имеют ту же функцию, как
Теперь у меня есть несколько функций, которые мне нужно использовать в этих директивах ,
Что является хорошим способом заставить меня не повторять себя, поэтому удалите код из директив и разместите его в одном месте. Так как этот код идентичен в любом случае. Я искал наследование областей, но пока не смог решить эту проблему.
Это код, который используется в нескольких директив:
$scope.widgetData = false;
$scope.graphData = false;
$scope.graphSelectorIndex = 0;
$scope.graphSelector = [
{ 'byPeriod' : 'Periode'},
{ 'byHour' : 'Uur' },
{ 'byDay' : 'Dag'}
];
$scope.graphSelectorByText = function (text) {
switch (text) {
case ('byPeriod'):
$scope.selector = 'byPeriod'
$scope.graphData = $scope.allGraphData.byPeriod;
$scope.graphType = 'Line';
break;
case ('byDay'):
$scope.selector = 'byDay'
$scope.graphData = $scope.allGraphData.byDay;
$scope.graphType = 'Line';
break;
case ('byHour'):
$scope.selector = 'byHour'
$scope.graphData = $scope.allGraphData.byHour;
$scope.graphType = 'Bar';
break;
}
}
$scope.graphSelectorByInt = function (int) {
switch (int) {
case (0):
$scope.selector = 'byPeriod';
$scope.graphData = $scope.allGraphData.byPeriod;
$scope.graphType = 'Line';
break;
case (1):
$scope.selector = 'byDay';
$scope.graphData = $scope.allGraphData.byDay;
$scope.graphType = 'Line';
break;
case (2):
$scope.selector = 'byHour';
$scope.graphData = $scope.allGraphData.byHour;
$scope.graphType = 'Bar'
break;
}
}
$scope.graphSelectorPrev = function() {
$scope.graphSelectorIndex--;
if ($scope.graphSelectorIndex < 0) {
$scope.graphSelectorIndex = $scope.graphSelector.length-1;
}
$scope.graphSelectorByInt($scope.graphSelectorIndex);
console.log($scope.graphSelectorIndex);
}
$scope.graphSelectorNext = function() {
$scope.graphSelectorIndex++;
if ($scope.graphSelectorIndex >= $scope.graphSelector.length) {
$scope.graphSelectorIndex = 0;
}
$scope.graphSelectorByInt($scope.graphSelectorIndex);
console.log($scope.graphSelectorIndex);
}
Некоторые HTML:
<div class="controls">
<span class="btn_arrow previous inactive" ng-click="graphSelectorPrev()">Vorige</span>
<p>{+ selector +}</p>
<span class="btn_arrow next" ng-click="graphSelectorNext()">Volgende</span>
</div>
Благодаря любому, кто может помочь!
Может быть, я не вы правы, но единственный дубликат - это материал в структуре дела? – semptic
Вы должны использовать объект: один из них имеет такие ключи, как «byPeriod» и т. Д. С функцией как значение. Когда вам нужно найти функцию 'int', вы должны сделать что-то вроде этого: var key = Object.keys (object) [int]; object (key); ' –
@semptic. Функции, которые я перечислял, используются в нескольких директивах, так как я могу получить это в центральном месте. – Maxicus