我已经包含了 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">
我对 Angular 比较陌生,所以我不太确定我得到 DI 100%。我假设 ngMessages 是由于包含数组而被注入(inject)的,但由于我没有在 Controller 中使用它,所以我不需要在函数中提及它。
最佳答案
ngMessages 在您的模块中是必需的,但不是您的 Controller 。
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',
['$scope',
function ($scope) {
var vm = this;
}]);
编辑 2:基本上对于 ngMessages 因为它是一个指令,您只需要将指令定义的模块添加到应用程序模块依赖项中,并且不需要向 Controller 中注入(inject)任何东西。也许您可以从 Controller 中获取要绑定(bind)的错误消息。
希望有帮助。
关于angularjs - 来自 Angular 的错误,AngularJS 1.3 想要 ngMessages 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26568197/