Angularjs Ralat: [$injector:modulerr] Semasa Migrasi ke V1.3
Dalam Angularjs, ralat [$injector:modulerr] menunjukkan isu pergantungan modul, khususnya apabila berhijrah daripada versi terdahulu ke V1.3.
Kod Angularjs Pra-V1.3:
<code class="html"><body>
<div ng-controller="Ctrl">
...
<script>
var Ctrl = function($scope) {
...
};
</script>
</div>
</body></code>
Salin selepas log masuk
Siaran -V1.3 Kod Angularjs:
<code class="html"><body ng-app="app">
<div ng-controller="Ctrl">
...
</div>
<script>
function Ctrl($scope) {
...
}
angular.module('app', [])
.controller('Ctrl', ['$scope', Ctrl]);
</script>
</body></code>
Salin selepas log masuk
Perubahan dengan V1.3:
-
Pengisytiharan Pengawal Global Dilumpuhkan: Selepas Angularjs V1.3, fungsi pengawal global tidak boleh diisytiharkan di luar modul. Sebaliknya, pengawal mesti didaftarkan dalam modul.
-
Arahan ng-app Diperlukan: Arahan ng-app mesti ada pada elemen akar untuk bootstrap aplikasi Angularjs.
Penyelesaian:
-
Buat Modul Angularjs: Gunakan angular.module() untuk mentakrifkan modul bernama 'app'.
-
Daftar Pengawal dalam Modul: Panggil .controller() pada modul untuk menentukan pengawal bernama 'Ctrl' dengan kebergantungan yang sesuai dan fungsi pengawal.
-
Tambahkan ng-app pada Elemen Root: Pastikan elemen HTML akar mempunyai atribut ng-app.
Nota Tambahan:
- Adalah disyorkan untuk menggunakan versi terkini Angularjs (1.6 atau lebih tinggi) untuk sebab kestabilan dan keselamatan.
- Jika anda perlu menyokong pengisytiharan pengawal global, anda boleh menggunakan angular.config().allowGlobalScoping(). Walau bagaimanapun, ini bukan amalan terbaik.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \'$injector:modulerr\' Semasa Migrasi AngularJS Saya ke Versi 1.3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!