AngularJS与Laravel集成问题:'greetingController'控制器未注册
解决AngularJS控制器未注册报错:The controller with the name 'greetingController' is not registered
嘿,这个问题我太熟了!你这明显是控制器名称大小写不匹配导致的——AngularJS对控制器的命名是严格区分大小写的,一点都不能错。
咱们来对比下你的代码:
- 在
app.js里,你注册的控制器是驼峰命名的GreetingController:
require('angular'); var myApp = angular.module('MyApp', []); myApp.controller('GreetingController', ['$scope', function($scope) { $scope.greeting = 'Hola!'; }]);
- 但在
welcome.blade.php的模板里,你写的是greetingController(首字母小写):
<div ng-app="MyApp" ng-controller="greetingController"> @{{greeting}} </div>
解决步骤很简单:
把模板里的控制器名称改成和注册时完全一致的GreetingController,修改后的welcome.blade.php代码如下:
<head> <script src="{{ asset("js/manifest.js") }}"></script> <script src="{{ asset("js/vendor.js") }}"></script> <script src="{{ asset("js/app.js") }}"></script> </head> <div ng-app="MyApp" ng-controller="GreetingController"> @{{greeting}} </div>
最后别忘了重新编译资源:
因为你用了Laravel Mix管理资源,所以运行下面的命令重新打包JS文件:
npm run dev # 或者生产环境用 npm run prod
刷新页面后,应该就能正常显示Hola!了。
小提醒:AngularJS的控制器、指令这些名称都严格区分大小写,以后写的时候一定要注意保持注册和引用的一致性哦!
内容的提问来源于stack exchange,提问作者ralphy
相关产品推荐
相关产品推荐

