IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AngularJS Discussion :

Afficher directement dans la vue, après chargement d'un service ou d'une factory.


Sujet :

AngularJS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Afficher directement dans la vue, après chargement d'un service ou d'une factory.
    Voilà, je cherche à faire quelque chose, mais je ne sais pas si c'est possible :

    Je veux Charger les variables que l'on voit dans la vue directement à partir d'un service, ou d'une factory : Explication :

    Pour l'instant voici ce qui fonctionne :

    1. J'ai ma factory qui retourne le nombre 45645:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    .factory('getNombre', getNombre); 
     
    function getNombre() {
            var instance = {
                nombre: nombre
    		};	
     
            return instance;
     
    		function nombre() {
    			return 45645
    		};
    // ... to be continued ...
    };
    2. Je joins donc cette factory à mon contrôleur comme ceci, pour pouvoir l'activer et y avoir accès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    .controller('nouveauCtrl', function($scope,categoriesService,getNombre) {})
    3. Ensuite le gros problème est que ma vue HTML n'affiche pas directement mon nombre ! Elle est comme ça:



    4. Pour que cela fonctionne, je dois encore écrire dans le contrôleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $scope.nb = getNombre.nombre();
    Voilà, donc ma question c'est :

    Comment faire pour ne pas avoir à écrire la ligne dans le controleur ?? Ca fait perdre un temps fou ! (La ligne $scope.nb = getNombre.nombre(); qui affecte la variable au $scope)

    Est-ce que c'est le comportement normal de AngularJS ?

    Moi ce que je voudrais, c'est charger ma factory, et que tous les "brackets" (exemple => {{maData}} s'alimentent automatiquement )à partir de la factory ! Est-ce possible ?

    Admettons que j'ai 50 valeurs à charger dans ma factory, j'ai pas envie de taper 50 fois ça dans le controleur, c'est hyper "reloud":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $scope.nombre1 =  getNombre.nombre1();
    $scope.nombre2 =  getNombre.nombre2();
    $scope.nombre3 =  getNombre.nombre3();

    J'ai essayé de nommer la variable comme ça dans ma vue( De la même façon que dans le service) :
    Mais cela n'affiche rien
    Dernière modification par Invité ; 30/05/2016 à 14h01.

  2. #2
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    .factory('getNombre', getNombre); 
     
    function getNombre() {
            var instance = {
                data: {
                    nombres: [{name:'un', val: 1}, {name:'deux', val: 2}, {name:'trois', val: 3}]
                }
            };	
     
            return instance;
     
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    .controller('nouveauCtrl', function($scope,notifier,categoriesService,getNombre) {
        $scope.data = getNombre.data;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div ng-repeat="nb in data.nombres">{{nb.name}} : {{nb.val}}</div>
    Toujours utiliser des objets complexes pour représenter ton modèle.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup, ah oui super, pour l'objet complexe merci beaucoup !


    J'en déduis donc qu'on est obligé d'affecter les variables provenant d'une factory au $scope dans le controleur,
    et que cela ne peut pas se faire automatiquement, avec une correspondance de nom de variable par exemple.

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/09/2015, 14h51
  2. [IP-2010] Formulaire web a afficher direct dans une page SP 2010
    Par Logann23 dans le forum InfoPath
    Réponses: 6
    Dernier message: 06/01/2012, 09h10
  3. Réponses: 4
    Dernier message: 13/04/2011, 18h22
  4. Réponses: 0
    Dernier message: 30/12/2010, 10h21
  5. Réponses: 2
    Dernier message: 28/10/2007, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo