recherche

Maison  >  Questions et réponses  >  le corps du texte

angulaire.js - $scope est-il un paramètre formel ou un paramètre réel lors de la déclaration d'une fonction de contrôleur dans Angular?

Je suis un peu confus quand je suis nouveau sur Angular. Prenez la fonction de contrôleur suivante comme exemple

.
    function hello($scope) {
        $scope.name = '张三'
    }

Il s'agit d'une déclaration de fonction, $scope devrait être un paramètre formel, n'est-ce pas ? Mais changer $scope par un autre identifiant tel que s ne fonctionnera pas. On peut voir que $scope est le paramètre réel transmis lorsque la fonction hello est appelée. Mais ces trois lignes de code sont des déclarations de fonctions, alors pourquoi les paramètres réels sont-ils transmis ?

J'ai probablement réalisé que ce n'est pas une déclaration de fonction normale. Peut-être que cela a quelque chose à voir avec le mécanisme de liaison des fonctions du contrôleur d'Angular ? A quoi ça ressemble exactement ?

世界只因有你世界只因有你2780 Il y a quelques jours813

répondre à tous(3)je répondrai

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 16:52:49

    Ce type de passage de paramètres pour obtenir des dépendances est une fonctionnalité majeure d'AngularJS - l'une des manifestations de l'injection de dépendances.
    Mais pourquoi pouvons-nous obtenir des dépendances en déclarant simplement des paramètres ?

    AngularJS utilise $injector pour gérer les requêtes et le chargement dépendants, tels que

    // 使用注入器加载应用
    var injector = angular.injector(['ng', 'myApp']);
    // 通过注入器加载$controller服务
    var $controller = injector.get('$controller');
    var scope = injector.get('$rootScope').$new();
    // 加载控制器并传入一个作用域
    var MyController = $controller('MyController', {$scope: scope})
    

    S'il n'y a pas de déclaration explicite, $injectordéduit la dépendance en fonction du nom du paramètre À ce stade, l'ordre des paramètres n'a aucun sens.
    Autrement dit, on peut aussi déclarer ainsi :

    angular.module('myApp')
    .controller('MyController', ['$scope', 'greeter', function(renamed$scope, renamedGreeter) {
        //do something
    }]);
    

    répondre
    0
  • 滿天的星座

    滿天的星座2017-05-15 16:52:49

    Eh bien, cette chose n'est qu'une déclaration de fonction là où elle est écrite. L'importance du nom du paramètre formel est entièrement décidée par le lecteur. L'analyseur standard ECMAScript ne pense pas que ce soit important (je suppose), mais Angular. l'a écrit en js. js" analyseur. . . De cette façon, le nom du paramètre de fonction est important

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 16:52:49

    Portée

    L'objet $scope dans AngularJS est là pour convertir le modèle de domaine
    Exposé à des vues (modèles). Définissez simplement la propriété sur l'instance de portée et vous pourrez obtenir la valeur lorsque le modèle est rendu.

    Les étendues peuvent également étendre les données et les fonctions spécifiques pour des vues spécifiques. Définissez simplement quelques fonctions sur l'instance de portée pour convertir une interface utilisateur spécifique
    La logique est exposée au modèle.

    Par exemple, vous pouvez créer une méthode getter pour la variable name comme suit :

    var HelloCtrl = function ($scope) {  
        $scope.getName = function() {     
            return $scope.name;
       };
    }
    

    Ensuite, utilisez-le dans le modèle comme ceci :
    <h1>Hello, {{getName()}} !</h1>

    $portée
    Les objets nous donnent un contrôle très précis sur les parties du modèle qui se trouvent dans ce domaine et sur les opérations disponibles au niveau de la couche de vue. En théorie, les portées AngularJS sont très similaires au modèle MVVM ViewModel.

    http://note.sdo.com/u/635412003927148913/n/s6cBN~lcIHwG4M1-Y000LW

    répondre
    0
  • Annulerrépondre