Saya menulis aplikasi sampel menggunakan angularjs. saya mendapat kesalahan yang disebutkan di bawah ini di browser chrome.
Kesalahan adalah
Kesalahan: [ng: areq] http://errors.angularjs.org/1.3.0-beta.17/ng/areq?p0=ContactController&p1=not%20a%20function%2C%20got%20undefined
Yang menjadikan sebagai
Argumen 'ContactController' bukanlah sebuah fungsi, tidak ditentukan
Kode
<!DOCTYPE html>
<html ng-app>
<head>
<script src="../angular.min.js"></script>
<script type="text/javascript">
function ContactController($scope) {
$scope.contacts = ["[email protected]", "[email protected]"];
$scope.add = function() {
$scope.contacts.push($scope.newcontact);
$scope.newcontact = "";
};
}
</script>
</head>
<body>
<h1> modules sample </h1>
<div ng-controller="ContactController">
Email:<input type="text" ng-model="newcontact">
<button ng-click="add()">Add</button>
<h2> Contacts </h2>
<ul>
<li ng-repeat="contact in contacts"> {{contact}} </li>
</ul>
</div>
</body>
</html>
Saya mendapat masalah ini karena saya telah membungkus file definisi pengontrol dalam penutupan:
Tapi saya lupa untuk benar-benar menjalankan closure itu untuk mengeksekusi kode definisi itu dan benar-benar memberi tahu Javascript pengontrol saya ada. Yaitu, di atas perlu:
Perhatikan () di bagian akhir.
sumber
Saya seorang pemula dengan Angular dan saya melakukan kesalahan dasar karena tidak menyertakan nama aplikasi di elemen root sudut. Jadi, mengubah kode dari
untuk
bekerja untuk saya. @PSL, telah membahas hal ini dalam jawabannya di atas.
sumber
Saya mengalami kesalahan ini karena saya tidak memahami perbedaan antara
angular.module('myApp', [])
danangular.module('myApp')
.Ini membuat modul 'myApp' dan menimpa modul apa pun yang ada bernama 'myApp':
angular.module('myApp', [])
Ini mengambil modul yang ada 'myApp':
angular.module('myApp')
Saya telah menimpa modul saya di file lain, menggunakan panggilan pertama di atas yang membuat modul lain alih-alih mengambil seperti yang saya harapkan.
Lebih detail di sini: https://docs.angularjs.org/guide/module
sumber
Saya baru saja bermigrasi ke angular 1.3.3 dan saya menemukan bahwa jika saya memiliki beberapa pengontrol dalam file yang berbeda saat aplikasi diganti dan saya kehilangan wadah yang dinyatakan pertama kali.
Saya tidak tahu apakah itu latihan yang baik, tapi mungkin bisa membantu untuk yang lain.
sumber
Saya mengalami masalah ini ketika saya secara tidak sengaja menyatakan ulang
myApp
:Setelah deklarasikan ulang,
Controller1
berhenti bekerja dan memunculkan kesalahan OP.sumber
Saran yang sangat bagus, kecuali bahwa kesalahan YANG SAMA DAPAT terjadi hanya dengan kehilangan skrip penting yang disertakan pada halaman root Anda
contoh:
halaman: index.html
Hilang
Saat Route diberi tahu pengontrol dan tampilan apa yang akan disajikan:
Begitu penting masalah pengontrol yang tidak ditentukan DAPAT terjadi dalam kesalahan yang tidak disengaja ini bahkan tidak mereferensikan pengontrol!
sumber
Kesalahan ini mungkin juga terjadi ketika Anda memiliki proyek besar dengan banyak modul. Pastikan bahwa aplikasi (modul) yang digunakan di file angular Anda sama dengan yang Anda gunakan di template, dalam contoh " thisApp ".
app.js
index.html
sumber
Jika semuanya gagal dan Anda menggunakan Gulp atau yang serupa ... jalankan kembali!
Saya menyia-nyiakan waktu 30 menit untuk memeriksa semuanya ketika yang dibutuhkan hanyalah tendangan cepat di celana.
sumber
Jika Anda menggunakan rute (probabilitas tinggi) dan konfigurasi Anda memiliki referensi ke pengontrol dalam modul yang tidak dideklarasikan sebagai dependensi, maka inisialisasi mungkin juga gagal.
Misalnya dengan asumsi Anda telah mengonfigurasi ngRoute untuk aplikasi Anda, seperti
Hati-hati di blok yang menyatakan rute,
Nyatakan
secondModule
sebagai ketergantungan setelah 'ngRoute' akan menyelesaikan masalah. Saya tahu saya punya masalah ini.sumber
Saya mendapatkan kesalahan ini karena saya menggunakan versi angular lama yang tidak kompatibel dengan kode saya.
sumber
Kesalahan ini terjadi, dalam kasus saya, didahului oleh kesalahan sintaks di list.find () fuction; 'temukan' metode daftar yang tidak dikenali oleh IE11, jadi harus diganti dengan metode Filter, yang berfungsi untuk IE11 dan chrome. lihat https://github.com/flrs/visavail/issues/19
sumber
Kesalahan ini, dalam kasus saya, didahului oleh kesalahan sintaksis di metode pencarian daftar di IE11. jadi ganti metode temukan dengan metode filter seperti yang disarankan https://github.com/flrs/visavail/issues/19
maka di atas pengontrol tidak didefinisikan kesalahan diselesaikan.
sumber
Saya mendapat kesalahan yang sama saat mengikuti tutorial lama dengan (belum cukup lama) AngularJS 1.4.3. Sejauh ini solusi paling sederhana adalah mengedit sumber angular.js dari
untuk
dan cukup ikuti tutorial sebagaimana adanya, dan fungsi global yang tidak digunakan lagi hanya berfungsi sebagai pengontrol.
sumber
angular.module('app') .config(['$controllerProvider', function($controllerProvider) { $controllerProvider.allowGlobals(); }]);