Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

angular 1.3 can't find the controller function

I am new to angular and tried to go with 1.3 new release.
Here is my code

<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>

The console gives this error.

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

But when I change the angular source to

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

Then it works. I use chrome. any one let me know where can be the problem exists.

like image 428
Débora Avatar asked Sep 05 '14 05:09

Débora


1 Answers

Global controller functions are no longer supported by default in 1.3. See change log...

$controller will no longer look for controllers on window. The old behavior of looking on window for controllers was originally intended for use in examples, demos, and toy apps. We found that allowing global controller functions encouraged poor practices, so we resolved to disable this behavior by default.

It can be re-enabled with this config...

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();
}]);
like image 144
Anthony Chu Avatar answered Nov 19 '22 16:11

Anthony Chu