[英]Breaking change from between AngularJS 1.2 and 1.4?
以下代碼適用於Angular 1.2,但在1.4中出現錯誤錯誤:[ng:areq]參數'MyController'不是函數,未定義。 代碼來自“ng-book”一書,可以在這里找到一個實時工作示例: http : //jsbin.com/uHiVOZo/1/edit?html,output 。
改變了什么?
<body>
<div ng-controller="MyController">
{{ clock }}
</div>
<script type="text/javascript">
function MyController($scope) {
$scope.clock = new Date();
var updateClock = function() {
$scope.clock = new Date();
};
setInterval(
function() {
$scope.$apply(updateClock);
},
1000
);
updateClock();
};
</script>
</body>
(將https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.js替換為https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0- jsbin鏈接中的rc.2 / angular.js )
我不知道任何版本的Angular都允許您在沒有創建模塊的情況下創建控制器。 無論如何,實例化模塊並注冊控制器可以解決您的問題。 jsbin
將其添加到html中的應用程序decalartion中:
ng-app="app"
修改你的腳本:
angular.module('app', []) // this creates a module
function MyController () { ... }
// register controller to module
angular.module('app').controller('MyController', MyController)
請參閱https://docs.angularjs.org/guide/migration
“從1.2遷移到1.3控制器由於3f2232b5,$ controller將不再在窗口上尋找控制器。查看控制器窗口的舊行為最初是用於示例,演示和玩具應用程序。我們發現允許全局控制器功能鼓勵不良做法,所以我們決定默認禁用此行為。
要遷移,請使用模塊注冊控制器,而不是將它們公開為全局:“
之前:
function MyController() {
// ...
}
后:
angular.module('myApp', []).controller('MyController', [function() {
// ...
}]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.