angularjs et ses scopes ...

Par Traitor, il y a 11 ans


Bonjour,

Je suis en train d'apprendre AngularJs.
Chaque ng-repeat a son propre scope non? Alors pourquoi mon code réagi ainsi?

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div ng-app="app"> <div ng-controller="exCtrl"> <input ng-model=count /> [{{count}}]<br><hr> <div ng-repeat="v in [1,2,3]"> <button ng-click="incr()">{{count}}</button> </div> </div> </div> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script> <script> var app = angular.module("app", []); app.controller("exCtrl", function($scope) { $scope.count = 1; $scope.incr = function(){$scope.count++;}; }); </script> </body> </html>

Merci.

3 réponses

Traitor, il y a 11 ans

Erreur de manipulation : tu n'a pas répondu à ma question lol.

Sinon, il y a 3 buttons dans 3 scopes différents (ng-repeat), ils modifient la propriété (de leur scope...) $scope.count par le biais d'une fonction de leur scope $scope.incr(). Pourquoi la fonction incr() affecte tous les $scope.count?

Grafikart, il y a 11 ans

Parceque la fonction est au niveau du scope du controller, donc la fonction affecte le scope du controller. Si en revanche tu mettais count = count + 1 dans ton click il affecterait alors le scope dans le repeat.

Traitor, il y a 11 ans

You damn right!
Thanks.