在角度材质中添加来自控制器的调用错误消息?

时间:2017-01-20 12:36:55

标签: angularjs angularjs-directive angular-material

我想添加错误消息,如下所示:

  <md-input-container>
    <label>Last Name</label>
    <input name="lastName" ng-model="lastName" required>
    <div ng-messages="userForm.lastName.$error" ng-show="userForm.lastName.$dirty">
      <div ng-message="required">Here is some message</div> 
    </div>
  </md-input-container>

但是想要从控制器调用渲染:

callMessage() {
// How can I implement this?
}

3 个答案:

答案 0 :(得分:1)

我假设您没有使用controller as语法,因此您必须在控制器中的$scope对象上定义一个函数:

function YourController($scope,...){

   $scope.callMessage = function(){
      //you can access your form using $scope.userForm
      return "yourString";
   }
}

您的标记将更改如下:

<md-input-container>
  <label>Last Name</label>
  <input name="lastName" ng-model="lastName" required>
  <div ng-messages="userForm.lastName.$error" ng-show="userForm.lastName.$dirty">
  <div ng-message="required">{{callMessage()}}</div> 
</div>

重要的是你在$scope上定义你的函数,这样Angular实际上可以将标记中的{{callMessage()}}部分绑定到你的函数。

答案 1 :(得分:0)

你可以这样做,

BufferError: memoryview: underlying buffer is not writable

来自控制器

 <md-input-container>
  <label>Last Name</label>
  <input name="lastName" ng-model="lastName" required>
  <div ng-messages="userForm.lastName.$error" ng-show="vm.callMessage(userForm.lastName.$dirty)">
  <div ng-message="required">{{vm.myMessage}}</div> 
</div>

答案 2 :(得分:0)

在设置表单后,您可以直接在控制器中调用$ error。

查看

<md-input-container>
        <label>Last Name</label>
        <input name="lastName" ng-model="lastName" required>
        <div ng-messages="userForm.lastName.$error" ng-show="userForm.lastName.$dirty">
          <div ng-message="required">{{errorMsg}}</div> 
        </div>
      </md-input-container>

<强>控制器

 var isError = $scope.userForm.lastName.$error;

 if (isError) {
    $scope.errorMsg = 'Hey, this is error message';
 }