gpt4 book ai didi

angularjs - 来自 Angular 的错误,AngularJS 1.3 想要 ngMessages 注入(inject)

转载 作者:行者123 更新时间:2023-12-04 21:40:49 24 4
gpt4 key购买 nike

我已经包含了 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 是指令而不是服务,请查看此文档

  • 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',
    ['$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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com