我已经包含了angular-messages.js,如下面的索引所示.当我运行我的应用程序时,我收到错误:
Error: [$compile:ctreq] Controller 'ngMessages',required by directive 'ngMessage',can't be found!
我的registration.js很简单,我相信我正确地做了依赖.它看起来如下:
angular.module('registrationController',['ngMessages']).controller('RegistrationCtrl',['$scope','ngMessages',function ($scope) { var vm = this; }]); <script src="js/angular.js"></script> <script src="js/angular-messages.js"></script> <script src="js/angular-route.js"></script> <script src="js/angular-resource.js"></script> <script src="app/app.js"></script> <script src="app/controllers/registration.js"></script>
–
<form novalidate="novalidate" ng-submit="registerForm()" ng-controller="RegistrationCtrl">
我对角度比较新,所以我不太确定我得到DI 100%.我假设因为包含数组而注入了ngMessages但是因为我没有在控制器中使用它,所以我不需要在函数中提及它.
解决方法
这里的ngMessages是您的模块所必需的,但不是您的控制器.
ngMessages是指令而不是服务,请查看此文档
> https://docs.angularjs.org/api/ngMessages/directive/ngMessages
这就是你如何将它定义为angularJs模块的要求
angular.module('myModule',['ngMessages']);
然后你可以在你的HTML中使用这样:
<form name="myForm"> <input type="text" ng-model="field" name="myField" required minlength="5" /> <div ng-messages="myForm.myField.$error"> <div ng-message="required">You did not enter a field</div> <div ng-message="minlength">The value entered is too short</div> </div> </form>
编辑:这是一个工作样本
1- Index.html应该是:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body ng-app="registerApp" ng-controller="RegistrationCtrl"> <form name="myForm"> <input type="text" ng-model="field" name="myField" required minlength="5" /> <div ng-messages="myForm.myField.$error"> <div ng-message="required">You did not enter a field</div> <div ng-message="minlength">The value entered is too short</div> </div> </form> <script src="Scripts/angular.js"></script> <script src="Scripts/angular-messages.js"></script> <script src="app.js"></script> </body> </html>
2- app.js
angular .module('registerApp',['ngMessages']) .controller('RegistrationCtrl',function ($scope) { var vm = this; }]);
编辑2:基本上对于ngMessages,因为它是一个指令,你只需要将指令所定义的模块添加到app模块依赖项中,而不需要向控制器注入任何东西.也许你可以从控制器获取绑定的错误消息.
希望有所帮助.