Pytanie kąt 1.3 nie może znaleźć funkcji kontrolera


Jestem nowy w kanciastym i próbowałem przejść z 1.3 nowym wydaniem.
Oto mój kod

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.0/angular.min.js"></script>
</head>
<body>
<div data-ng-controller="SimpleController"  >

<ul>        
<li data-ng-repeat="customer in customers">{{customer.name}} - {{customer.city}}</li>
</ul>


</div>
<script>

function SimpleController($scope){

    alert('done1');
    $scope.customers=[{name:'1name',city:'1city'},{name:'2name',city:'2city'}];
    alert('done');
} 
</script>

Konsola podaje ten błąd.

Error: [ng:areq] http://errors.angularjs.org/1.3.0-rc.0/ng/areq?p0=SimpleController&p1=not%20a%20function%2C%20got%20undefined    

Ale kiedy zmienię źródło kątowe na

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>   

Wtedy to działa. Używam chrome. ktoś mi daje znać, gdzie może być problem.


12
2017-09-05 05:33


pochodzenie


Wypróbuj nieokreślony plik angular.js. Komunikaty o błędach są zwykle łatwiejsze do zrozumienia - Phil
@Phil. próbowałem https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.0/angular.js . Wciąż to samo. nie działa.. - Débora
Sam jestem nowy w kanciastym. Czy możesz używać atrybutów danych dla dyrektyw kątowych? Lubić data-ng-controller zamiast ng-controller. Po drugie, spróbuj kodu takiego jak ten: angular.module('controllers').controller('SimpleController', ['$scope', function($scope) { /* ... */ }]);. Zasadniczo, ustaw kontroler w "przestrzeni nazw kąta" - Gasim


Odpowiedzi:


Globalne funkcje kontrolera nie są już obsługiwane domyślnie w wersji 1.3. Widzieć zmienić dziennik...

Kontroler $ nie będzie szukał kontrolerów w oknie. Stary   zachowanie początkowego okna kontrolerów było pierwotnie zamierzone   do użytku w przykładach, aplikacjach demonstracyjnych i zabawkach. Okazało się, że pozwalamy   funkcje globalnego kontrolera zachęcały do ​​złych praktyk, więc postanowiliśmy   aby wyłączyć to zachowanie domyślnie.

Można go ponownie włączyć za pomocą tej konfiguracji ...

angular.module('myModule').config(['$controllerProvider', function($controllerProvider) {
  // this option might be handy for migrating old apps, but please don't use it
  // in new ones!
  $controllerProvider.allowGlobals();
}]);

23
2017-09-05 05:45



Dzięki za odpowiedź. Jestem bardzo nowy w kwestii kątowości i przypuszczam, że istnieje wiele tutoriali i powinien on być oparty na 1.2. Jeśli przejdę do wersji 1.3 z 1.2 tutorialami, mogą pojawić się takie problemy. ng-learn.org/2014/06/Migration_Guide_from_1-2_to1-3 również pokazuje pewne zmiany i nie mam pojęcia, co o nich wszystkim ... Czy poleciłbyś dobry punkt startowy / samouczek dla 1.3, aby uczyć się od zera. - Débora
Osobiście nauczyłbym się 1.2, ponieważ większość materiału bazuje na 1.2. Kiedy już poczujesz się komfortowo z Angular, wiele z tych rzeczy będzie miało sens. Istnieją różnice między 1.2 a 1.3, ale podstawowe pojęcia pozostają takie same. - Anthony Chu
Jakkolwiek, kiedy dodam wspomniany kod snipt, daje on błędy w konsoli Uncaught object angular.js:80 (anonymous function) angular.js:80 (anonymous function) angular.js:1799 ensure angular.js:1723 module angular.js:1797 (anonymous function) - Débora
Fragment kodu zakłada, że ​​zdefiniowano już moduł o nazwie myModule. Jeśli nie, zmień na angular.module('myModule', []).config(...); a następnie zmienić ng-app w twoim kodzie HTML ng-app="myModule"... - Anthony Chu
Nie zgadzam się z tą decyzją. Myślę, że łatwiej jest zrobić tak jak wcześniej. Wiele przykładów w Internecie przestanie działać. To sprawi, że Angular będzie trudniej się nauczyć. - VINICIUS SIN