Angular-styleguide: Matrices bajo scope.vm de directiva indefinida

Creado en 13 jun. 2017  ·  7Comentarios  ·  Fuente: johnpapa/angular-styleguide

Saludos,

Al seguir la guía de estilo Angular 1.x para directivas, si estoy haciendo referencia a la matriz scope.vm.virtStats desde el controlador, vuelve como indefinido. pero si hago referencia a un objeto simple del controlador, como scope.vm.title, devuelve un valor. ¿Porqué es eso? Porque veo que scope.vm tiene ese virtStats
matriz en la consola.

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

Todos 7 comentarios

@yosiasz Esto sucede porque está intentando acceder a la matriz dentro de la función link de la directiva que se llama antes de activateVirtsData

gracias @bampakoa!!! ¡basura! He estado mirando este código demasiado tiempo.

@bampakoa pregunta. pero se llama al controlador antes de .directive?

.controller('Dashboard', Dashboard)
 .directive('d3Chart', buildChart);

@yosiasz No se ejecutan en el orden en que lo declaras. Incluso si haces esto:

 .directive('d3Chart', buildChart)
.controller('Dashboard', Dashboard)

el orden de tiempo de ejecución será el mismo. Déjame aclararte si no lo entendiste.

¡Muy informativo! Entonces tendré que averiguar cómo llenar esa matriz para que linkFunc tenga acceso a esa matriz. ¡Gracias!

¿Es este conocimiento tribal o hay documentación para este comportamiento?

Creo que puede encontrar información relacionada en la documentación oficial de AngularJS .

¿Fue útil esta página
0 / 5 - 0 calificaciones