Façons de déclarer une Fonction dans AngularJS Contrôleur (controllerAs approche)

- Je utiliser contrôleur approche au lieu de $champ d'application. J'ai quelques problèmes avec l'appel de méthode à partir de l'HTML. Donc, la question est que la façon dont de nombreux moyens existent à déclarer et appeler des fonctions dans cette approche.

d'abord: Si je veux faire s.th. au premier abord)

var vm= this ; 
vm.dataOne=[];

function funcOne() {
        myService.serviceFunc()
            .then(function (response) {
                vm.dataOne= response.data;
            });
    };
function activate() {
        funcOne();
        }
    activate();  

deuxième: (Si je veux initialiser une variable basée sur une fonction de la valeur de retour )

 vm.dataTwo = function () {
        doSomeThing();
 }  
  • Est-il de toute façon?
  • Comment doit définir une fonction de contrôleur
    qui sera appelée à partir de HTML, comme

    ng-click = "ctrl.dataTwo()";   
  • lors de l'utilisation controllerAs format dans votre application, vous devez mettre vm au lieu de $portée avant la fonction. si vous utilisez la fonction de contrôleur et de ne pas utiliser dans HTML pas besoin d'ajouter vm avant la fonction.
  • Exactement je ne ce. Dans le premier code que je n'ai pas utiliser vm puisque c'est comme privées, et sera appelé localement. Mais dans la deuxième code que j'ai utilisé de la vm.dataTwo depuis je veux accéder qu'à partir de HTML comme méthode publique. puis, à partir de HTML, j'ai appeler La touche ctrl.dataTwo() mais je ne sais pas pourquoi il ne veut pas être appelé. (myController que ctrl )
  • pouvez-vous créer plunker?
  • Les deux fonctions sont privés. Pour les utiliser, vous avez à faire vm.funcOne = funcOne; et vm.activate = activate;. BTW, bravo à embrasser alias! Vous êtes un pas de plus vers nettoyeur de code.
  • La deuxième fonction qui j'ai dit dans le commentaire de la vm.dataTwo, pas activer(). Je veux dire quand j'utilise des vm.quelque chose de ce qui est public, sinon c'est du privé.
  • Bonne Expérience!! Après l'exécution de plus en plus et de débogage, dans le dernier test que j'ai vu que, finalement, après des années 50, le point de rupture activé!!! Il semble que le problème est le serveur gros temps de latence. Je devrais le tester plus à se assurer qu'il n'y a pas d'anomalie à côté client des opérations. Mais je vais garder la question du corps et de répondre étant donné qu'il pourrait être utile pour d'autres car il a une bonne distinction entre les fonctions de contrôleur. Merci à tous.

InformationsquelleAutor Elnaz | 2016-05-24