Les salutations,
Lorsque je suis le guide de style Angular 1.x pour les directives, si je fais référence au tableau scope.vm.virtStats du contrôleur, il revient comme indéfini. mais si je fais référence à un objet simple du contrôleur tel que scope.vm.title, il renvoie une valeur. Pourquoi donc? Parce que je vois scope.vm comme ayant ce virtStats
tableau dans la console.
.module('app.dashboard')
.controller('Dashboard', Dashboard)
.directive('d3Chart', buildChart);
`function buildChart() {
var directive = {
restrict: 'EA',
link: linkFunc,
};
return directive;
function linkFunc(scope, el, attr, ctrl) {
...lots of d3 visualization code here
console.log(scope.vm)
}
function Dashboard($state, $scope, dataservice, logger) {
var vm = this;
vm.virtStats = [];
vm.title = 'Dashboard';
clearSearchResult();
activateVirtsData();
function clearSearchResult() {
vm.virtStats = [];
};
function activateVirtsData() {
return dataservice.getVirtStatsData().then(function (data) {
vm.virtStats = data;
return vm.virtStats;
});
} );
};
@yosiasz Cela se produit parce que vous essayez d'accéder au tableau à l'intérieur de la fonction link
de la directive qui est appelée avant le activateVirtsData
merci @bampakoa!!! déchet! regardé ce code trop longtemps.
@bampakoa question. mais le contrôleur est appelé avant .directive ?
.controller('Dashboard', Dashboard)
.directive('d3Chart', buildChart);
@yosiasz Ils ne sont pas exécutés dans l'ordre dans lequel vous les déclarez. Même si tu fais ça :
.directive('d3Chart', buildChart)
.controller('Dashboard', Dashboard)
l'ordre d'exécution sera le même. Permettez-moi de préciser si vous ne l'avez pas compris.
Très informatif ! Je devrai donc comprendre comment remplir ce tableau pour que linkFunc ait accès à ce tableau. Merci!
S'agit-il de connaissances tribales ou existe-t-il une documentation sur ce comportement ?
Je pense que vous pouvez trouver des informations connexes sur la documentation officielle d'AngularJS .