Rumah > Artikel > hujung hadapan web > Mengapa saya mendapat ralat `[$injector:modulerr]` apabila berhijrah ke AngularJS versi 1.3?
Angularjs: Uncaught Error: [$injector:modulerr] dalam Berhijrah ke Versi 1.3
AngularJS versi 1.3 memperkenalkan perubahan yang memecahkan keserasian kod yang ditulis untuk versi sebelumnya. Dalam kes anda, anda menghadapi ralat [$injector:modulerr] kerana anda mengisytiharkan fungsi pengawal global (Ctrl) dan bukannya mendaftarkannya dengan modul AngularJS.
Mentakrifkan Modul AngularJS
Dalam AngularJS 1.3 dan lebih baru, cara pilihan untuk mengisytiharkan pengawal adalah dengan mendaftarkannya dengan modul AngularJS. Modul berfungsi sebagai bekas untuk mengatur dan mengkonfigurasi komponen AngularJS seperti pengawal, arahan, perkhidmatan dan penapis.
Menyelesaikan Ralat
Untuk menyelesaikan ralat, anda perlu buat modul AngularJS dan daftarkan pengawal Ctrl anda dengannya. Berikut ialah versi kod anda yang dikemas kini:
<code class="javascript">function Ctrl($scope) { $scope.age = 24; } var myApp = angular.module('app', []); myApp.controller('Ctrl', ['$scope', Ctrl]);</code>
Menaik taraf kepada AngularJS 1.6
AngularJS 1.3 kini ditamatkan. Adalah disyorkan untuk menaik taraf kepada AngularJS versi 1.6, yang mempunyai API yang lebih stabil dan prestasi yang lebih baik. Dalam AngularJS 1.6, cara pilihan untuk mengisytiharkan pengawal adalah melalui kelas:
<code class="typescript">export class Ctrl { constructor(public $scope: ng.IScope) { this.$scope.age = 24; } }</code>
Dan daftarkannya dengan modul AngularJS:
<code class="javascript">myApp.controller('Ctrl', Ctrl);</code>
Dengan mengikuti garis panduan ini, anda boleh berjaya pindahkan aplikasi AngularJS anda ke versi 1.3 atau naik taraf kepada versi 1.6 terkini dan selesaikan ralat [$injector:modulerr].
Atas ialah kandungan terperinci Mengapa saya mendapat ralat `[$injector:modulerr]` apabila berhijrah ke AngularJS versi 1.3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!