Description de la scène :
Il y a une liste déroulante de sélection du mois sur la page. Cliquez sur la liste déroulante et nous pouvons sélectionner le mois correspondant
<select ng-model="month"></select>
Dans le contrôleur, vous devez vous rendre dans le backend pour obtenir les données correspondantes selon le mois sélectionné
$scope.$watch($scope.month, function(){
$http({ url:url,method:'GET',withCredentials:true
}).success(function(data,header,config,status){
// do something
})
});
Mes réflexions :
En supposant qu'il y ait plusieurs listes déroulantes sur la page, utiliser $watch pour surveiller les modifications de $scope une par une n'est pas idéal. Existe-t-il une idée selon laquelle au lieu d'utiliser $watch, lorsque le modèle ng change, le contrôleur envoie automatiquement une requête http pour obtenir les données ?
À la recherche de conseils d'experts~
Votre $watch est mal écrit :
La méthode suivante est également très simple :
Si vous utilisez ng-change, les performances peuvent être meilleures. N'oubliez pas de supprimer le $watch() ci-dessus :
La différence de performances est fondamentalement négligeable. J'ai déjà fait un test similaire, exécuté 1 million de fois, en 1 seconde.
Si je le fais, j'utiliserai la méthode $watch, qui est pratique pour la maintenance ultérieure (la méthode ng-change nécessite de changer le contrôleur et le modèle, tandis que la méthode watch n'a besoin que de changer le contrôleur).
Les listes déroulantes
sont généralement traitées à l'aide de la commande
;ngChange
ngChangengChange est le meilleur choix. En principe, définissez le moins de files d'attente d'écoute possible, sinon l'efficacité sera très faible.