2014-12-02 75 views
0

你能解釋一下爲什麼下面的代碼返回Error: error:areq Bad Argument爲什麼此片段返回「錯誤:areq錯誤論據」?

(見live example

<!DOCTYPE html> 
<html ng-app> 
<head> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
    <script> 
    function SimpleController($scope) { 
     $scope.users = [ 
      {name: 'Dave Jones', city: 'Phoenix'}, 
      {name: 'Jane True', city:'Washington'} 
     ]; 
    } 
    </script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.4/angular.min.js"></script> 
</head> 
<body ng-controller="SimpleController"> 
<ul> 
    <li ng-repeat="user in users">{{ user.name }}</li> 
</ul> 
</body> 
</html> 

回答

1

在實際應用中,你不應該在全球範圍內的窗口定義控制器, 在最近的角度版本中,$ controllerProvider默認在窗口範圍 中不查找,因爲這是一種不好的做法,應該只用於演示的用途。

但是你可以通過調用allowGlobals()啓用此功能:

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

的替代性和推薦的方法是在一個模塊中來定義它。

的官方文檔可以幫助你在這個 https://docs.angularjs.org/guide/controller

+0

謝謝你的回答。這很好地解釋了爲什麼在30分鐘[AngularJS基礎知識在60小時內](https://www.youtube.com/watch?v=i9MHigUZKEM),該片段不再有效。 – 2014-12-02 11:55:32

1

你並沒有完全正確地定義你的控制器,試試這個:

<!DOCTYPE html> 
<html ng-app="testApp"> 
<head> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.4/angular.min.js"></script> 
    <script> 
    var testApp = angular.module('testApp', []); 

    testApp.controller('SimpleCtrl', function ($scope) { 
     $scope.users = [ 
      {name: 'Dave Jones', city: 'Phoenix'}, 
      {name: 'Jane True', city:'Washington'} 
     ]; 
    }) 
    </script> 
</head> 
<body ng-controller="SimpleCtrl"> 
<ul> 
    <li ng-repeat="user in users">{{ user.name }}</li> 
</ul> 
</body> 
</html> 
+0

很多感謝您的回答。您的代碼運行良好,並使用最佳做法。但Ahmad的回答解釋了爲什麼我的代碼片段與以前版本的AngularJS一起工作,並且不再工作。 – 2014-12-02 11:58:30