как получить значение контроллера для проверки Ng-сообщения?

Я пытаюсь получить значение от контроллера до ошибки ng-message, но значение не приходит.

В ng-show я могу легко привязать значение к ng-show, но в ng-message я не знаю, как это сделать...

<body ng-app="BlankApp" ng-cloak ng-controller="ctrl">

  <form name="exampleForm" ng-submit="exampleForm.$valid && demo()">
    <label>User Message:</label>
    <input type="text" name="userMessage" class="form-control" rows="4" ng-model="message" ng-minlength="10" ng-maxlength="100" required></textarea>
    <div ng-messages="submitted1 && exampleForm.userMessage.$error">
      <div ng-message=" required">This field is required</div>
      <div ng-message=" test">Message must be over 10 characters</div>
      <div ng-message="test">{{test}}</div>
    </div>

    <input type="submit"  ng-click="submitted1=true" value="Recharge"/>
  </form>
  <script type="text/javascript">    
    angular.module('BlankApp', ['ngMessages'])
    .controller('ctrl',function($scope){
      $scope.message;
      $scope.val=40;
      $scope.demo=function(){
        if($scope.val >=$scope.message)
          $scope.msg="Hello world"
      }
      else{
        $scope.test="pls enter the number 10 to 40"
      }
    })
  </script>
</body>

person chozhan    schedule 09.12.2016    source источник
comment
Возможный дубликат Отобразить пользовательскую ошибку ngMessage   -  person rave    schedule 09.12.2016


Ответы (1)


ng-messages должна прослушивать объект ключ/значение. И каждый ng-message является ключом в предыдущем объекте. Также test не является допустимым ключом в объекте exampleForm.userMessage.$error, как описано в официальной документации: https://docs.angularjs.org/api/ngMessages

Таким образом, вы можете переписать свой код примерно так:

<div ng-if="submitted1">
    <div ng-messages="exampleForm.userMessage.$error">
        <div ng-message="required">This field is required</div>
    </div>
</div>
person rave    schedule 09.12.2016
comment
Спасибо за ваш ответ, Mac, я знаю, что ng-messages принимает это необходимое, ng-maxlength и ng-minlength все, что я хочу, это передать значение контроллера в ошибку ng-message. Есть ли способ для этого? - person chozhan; 09.12.2016
comment
Вам нужно обновить объект $error в контроллере, например: exampleForm.userMessage.$error.customError= true; и в html <div ng-message="customError">{{test}}/div> - person rave; 09.12.2016
comment
этот вопрос на самом деле является дубликатом stackoverflow.com/questions/35401663/ - person rave; 09.12.2016