Menggunakan AngularJS dengan Scala Play, saya mendapatkan kesalahan ini.
Kesalahan: Argumen 'MainCtrl' bukan sebuah fungsi, tidak ditentukan
Saya mencoba membuat tabel yang terdiri dari hari-hari dalam seminggu.
Silakan lihat kode saya. Saya telah memeriksa nama Pengendali, tetapi tampaknya itu benar. Catatan: Kode yang digunakan dari jawaban SO ini
index.scala.html
@(message: String)
@main("inTime") {
<!doctype html>
<html lang="en" ng-app>
<head>
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
</head>
<div ng-controller="MainCtrl">
<table border="1">
<tbody ng-repeat='(what,items) in data'>
<tr ng-repeat='item in items'>
<td ngm-if="$first" rowspan="{{items.length}}">{{what}}</td>
<td>{{item}}</td>
</tr>
</tbody>
</table>
</div>
</html>
}
MainCtrl.js
(function() {
angular.module('[myApp]', []).controller('MainCtrl', function($scope) {
$scope.data = {
Colors: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
}
});
}());
angularjs
playframework
Kevin Meredith
sumber
sumber
ng-app
Anda dapat mengubahnya menjading-app=myApp
Jawaban:
Hapus
[]
dari nama ([myApp]) modulDan tambahkan
ng-app="myApp"
ke html dan itu akan berhasil.sumber
[]
menunjukkan bahwa Anda membuat modul baru. Menghapus parameter kedua menunjukkan bahwa Anda mengambil modul yang ada. Jadi satu kemungkinan untuk diperiksa adalah jika Anda meneleponangular.module
dua kali, kedua kali termasuk parameter kedua. Jika demikian, kejadian selanjutnya akan menimpa yang kedua, menyembunyikan definisi pengontrol apa pun hingga saat itu.[]
dia mengacu pada parameter pertama di mana OP memiliki[myApp]
bukanmyApp
. Dia tidak berbicara tentang parameter kedua.PERTAMA. periksa apakah Anda sudah benar
controller
dalam definisi rute, sama dengan nama pengontrol yang Anda tentukannama pengontrol yang berbeda dalam contoh ini akan menyebabkan kesalahan, tetapi contoh ini benar
KEDUA periksa apakah Anda telah mengimpor file javascript Anda:
<script src="modules/community/controllers/CommunityMembersCtrl.js"></script>
sumber
index.html
Saya mendapat pesan kesalahan yang sama (dalam kasus saya: "Argumen 'languageSelectorCtrl' bukan fungsi, tidak dapat ditentukan").
Setelah beberapa perbandingan yang membosankan dengan kode biji Angular, saya menemukan bahwa saya sebelumnya telah menghapus referensi ke modul pengontrol di app.js. (lihat di https://github.com/angular/angular-seed/blob/master/app/js/app.js )
Jadi saya punya ini:
angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.directives'])
Ini gagal.
Dan ketika saya menambahkan referensi yang hilang:
angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.controllers', 'MyApp.directives'])
Pesan kesalahan menghilang dan Angular dapat membuat pengontrol lagi.
sumber
Terkadang kesalahan ini disebabkan oleh dua
ng-app
arahan yang ditentukan dalam html. Dalam kasus saya karena kesalahan, saya telah menentukanng-app
dihtml
tag saya danng-app="myApp"
dibody
tag seperti ini:sumber
Ini benar-benar memakan waktu 4 JAM (termasuk pencarian tanpa akhir di SO) tetapi akhirnya saya menemukannya: secara tidak sengaja (tidak sengaja) saya menambahkan spasi di suatu tempat.
Bisakah kamu menemukannya?
angular.module('bwshopper.signup').controller('SignupCtrl ', SignupCtrl);
Jadi ... 4 jam kemudian saya melihat bahwa seharusnya:
angular.module('bwshopper.signup').controller('SignupCtrl', SignupCtrl);
Hampir tidak mungkin untuk melihat hanya dengan mata telanjang.
Ini menekankan pentingnya kontrol revisi (git atau apa pun) dan pengujian unit / regresi.
sumber
Controller
alih-alihcontroller
dan hanya itu yang diperlukan.Saya mengalami masalah yang sama dan dalam kasus saya itu terjadi sebagai akibat dari masalah ini:
Saya memiliki pengontrol yang ditentukan dalam modul terpisah (disebut 'myApp.controllers') dan disuntikkan ke modul aplikasi utama (disebut 'myApp') seperti ini:
Seorang rekan mendorong modul pengontrol lain dalam file terpisah tetapi dengan nama yang sama persis dengan milik saya (yaitu 'myApp.controllers') yang menyebabkan kesalahan ini. Saya pikir karena Angular bingung antara modul pengontrol tersebut. Namun pesan kesalahan itu tidak terlalu membantu dalam menemukan apa yang salah.
sumber
Dalam kasus saya (memiliki halaman ikhtisar dan halaman "tambahkan") saya mendapatkannya dengan pengaturan perutean seperti di bawah ini. Itu memberikan pesan untuk AddCtrl yang tidak dapat disuntikkan ...
Karena
when('/'
rute, semua rute saya pergi ke tinjauan umum dan pengontrol tidak dapat dicocokkan pada / tambahkan rendering halaman rute. Ini membingungkan karena saya SUDAH melihat template add.html tetapi pengontrolnya tidak dapat ditemukan.Menghapus rute '/' - saat kasus memperbaiki masalah ini untuk saya.
sumber
Jika Anda berada di dalam sebuah submodule, jangan lupa untuk mendeklarasikan modul tersebut di aplikasi utama. yaitu:
Jika Anda tidak mendeklarasikan subModule1 di mainApp, Anda akan mendapat "[ng: areq] Argument" MyController "bukan fungsi, tidak terdefinisi.
sumber
Poin kedua Уmed adalah kesalahan saya tetapi hanya sebagai catatan, mungkin itu membantu seseorang di suatu tempat:
Saya memiliki masalah yang sama dan sebelum saya menjadi gila, saya menemukan bahwa saya lupa memasukkan skrip pengontrol saya.
Karena aplikasi saya didasarkan pada ASP.Net MVC, saya memutuskan untuk tetap waras dengan memasukkan cuplikan berikut di App_Start / BundleConfig.cs saya
dan di Layout.cshtml
Sekarang saya tidak perlu lagi memikirkan untuk memasukkan file secara manual. Kalau dipikir-pikir, saya seharusnya melakukan ini saat menyiapkan proyek ...
sumber
Saya mendapat kesalahan yang wajar dengan LoginController, yang saya gunakan di main index.html. Saya menemukan dua cara untuk menyelesaikannya:
pengaturan $ controllerProvider.allowGlobals (), saya menemukan komentar itu di Angular change-list "opsi ini mungkin berguna untuk memigrasi aplikasi lama, tapi tolong jangan gunakan di aplikasi baru!" komentar asli di Angular
app.config (['$ controllerProvider', function ($ controllerProvider) {$ controllerProvider.allowGlobals ();}]);
kontraktor salah mendaftarkan pengontrol
sebelum
sekarang
'app' berasal dari app.js
sumber
Saya mengalami kesalahan yang sama dengan kesalahan besar:
Kamu melihat ? saya lupa '' di sekitar $ scope pertama, sintaks yang benar tentu saja:
Kesalahan pertama yang tidak langsung saya lihat adalah: " $ scope tidak ditentukan ", diikuti dengan " Kesalahan: [ng: areq] Argumen 'TreeEditStepControlsCtrl' bukan fungsi, tidak ditentukan "
sumber
Mungkinkah sesederhana memasukkan aset Anda ke dalam "" dan apa pun yang membutuhkan kutipan di dalamnya dengan ''?
menjadi
Itu bisa menyebabkan beberapa masalah dengan penguraian
sumber
Untuk memperbaiki masalah ini, saya harus menemukan bahwa saya salah mengeja nama pengontrol di deklarasi rute sudut:
sumber
Dalam kasus saya, itu adalah kesalahan ketik sederhana di
index.html
:itu seharusnya
tanpa tambahan
s
dalam nama pengontrol.sumber
Ternyata ini adalah Cache browser, menggunakan Chrome di sini. Cukup periksa "Disable cache" di bawah Inspect (Element) memecahkan masalah saya.
sumber
Karena ini muncul di Google ketika mencoba menemukan jawaban untuk: "Error: Argument '' bukan fungsi, tidak ditentukan".
Ada kemungkinan Anda mencoba membuat modul yang sama dua kali.
Sumber: https://docs.angularjs.org/api/ng/function/angular.module#overview
Contoh:
angular.module('myApp', [])
Digunakan untuk membuat modul tanpa memasukkan dependensi apa pun.angular.module('myApp')
(Tanpa argumen) digunakan untuk mendapatkan modul yang sudah ada.sumber
Tampaknya ada banyak solusi yang berfungsi yang menunjukkan kesalahan memiliki banyak penyebab sebenarnya .
Dalam kasus saya, saya belum mendeklarasikan pengontrol di
app/index.html
:Kesalahan hilang.
sumber