Angular-styleguide: Tableaux sous scope.vm de la directive undefined

Créé le 13 juin 2017  ·  7Commentaires  ·  Source: johnpapa/angular-styleguide

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;
            });     
        } );            
        }; 

Tous les 7 commentaires

@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 .

Cette page vous a été utile?
0 / 5 - 0 notes