簡體   English   中英

突破AngularJS 1.2和1.4之間的變化?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM