无法找到指令'ngMessage'所需的控制器'ngMessages'

时间:2016-03-18 12:23:57

标签: angularjs angular-material

您好我按照jonhpapa规则使用angularjs(1.5.0)开发应用程序。 我也使用角度材料1.0.6。

添加模块'ngMessages'时遇到问题。

我安装了lib angular-messages 1.5.1。

当我添加要使用的模块时,我在控制台上出现以下错误。

Error: [$compile:ctreq] Controller 'ngMessages', required by directive 'ngMessage', can't be found!
http://errors.angularjs.org/1.5.0/$compile/ctreq?p0=ngMessages&p1=ngMessage
    at http://localhost:3000/bower_components/angular/angular.js:68:12
    at getControllers (http://localhost:3000/bower_components/angular/angular.js:8817:19)
    at nodeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8982:33)
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8226:13)
    at nodeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8973:24)
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8226:13)
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8229:13)
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8229:13)
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8229:13)
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8229:13) <div data-ui-view="" class="ng-scope">

此时此视图没有控制器。该视图包含:

         <md-input-container>
            <label>First name</label>
            <input name="firstName" 
              ng-model="vm.user.firstName"
              md-maxlength="30" 
              required>
              <div ng-messages="vm.user.firstName.$error">
                <div ng-message="md-maxlength">Field has to be less than 30 characters long.</div>
                <div ng-message="required">Field required</div>
              </div>
          </md-input-container>

提前致谢,问候。

2 个答案:

答案 0 :(得分:7)

要解决此问题,请更换以下内容:

ng-message by ng-messages

这是输入错误。

答案 1 :(得分:5)

您的ng-messages需要包含表单的名称,然后是输入字段的名称。

所以:formName.fieldName.$error

然后ng-message需要包含验证规则(就像你一样)。

如果您的md-input-container周围没有表单,则需要添加一个表单。

表单名称可以是您想要的任何内容。

类似的东西:

<form name="vm.details">

    <md-input-container>
        <label>First name</label>
        <input name="firstName" 
          ng-model="vm.user.firstName"
          md-maxlength="30" 
          required>
          <div ng-messages="vm.details.firstName.$error">
            <div ng-message="md-maxlength">Field has to be less than 30 characters long.</div>
            <div ng-message="required">Field required</div>
          </div>
      </md-input-container>

</form>