Пользовательская директива, использующая ngMessage, не работает

** Обновить: **
Вот plnkr, чтобы показать мою проблему.
https://plnkr.co/edit/3U7MHlJw0gcEdwT4e64r?p=preview
Я уверен, что я делаю что-то не так.


Я создаю директиву многократного использования элемента, которая содержит метку, ввод и сообщения ng. Все данные для атрибутов хранятся в объекте Json, который я получаю с помощью службы $ http.

У меня есть динамические данные, работающие для метки, для входных атрибутов и ng-модели, наконец. ng-messages, ng-messages-include работают, но...

Я не могу заставить его работать с ng-messages-exp.

Вот код, который, надеюсь, поможет объяснить это:


JSON:

[
    {
        "inputsContact" : [
            { 
                "labelText" : "test Name",
                "labelId" : "testname",
                "labelName" : "testname",
                "inputId" : "testname",
                "inputName" : "testname",
                "placeholder" : "Enter your name",
                "model" : "testname",
                "type" : "text",
                "required" : "true",
                "messageDirty" : "jiraForm.testname.$dirty",
                "messageError" : "jiraForm.testname.$error",
                "messageInclude" : "app/views/partials/messages/messages-error-text.html"
            }
        ]
    }
]

Сервис:

.factory('BuildInputService', ['$http',  function($http) {
    return {
        getInputs: function( callback ) {
            $http.get('app/data/input-creation-data.json')
            .then(function(response) {
                callback( response );
            });
        }
    };
}])

Элемент директивы Html:

<text-input-comp input-data="testName" model-data="ticketData[testName.model]" message-data="errorMessages" message-dirty="jiraForm[testname].$dirty" message-error="jiraForm[testname].$error" message-include-url="testName[messageInclude]" class="input-group form-group"></text-input-comp>

--- ticketData - данные созданной формы


Код директивы:

.directive('textInputComp', [ '$compile', function($compile){
  return {
    restrict: 'E',
    require: 'territoryController',
    scope: {
      inputData: '=',
      modelData: '=',
      messageData: '=messageData',
      messageDirty: '=messageDirty',
      messageError: '=messageError',
      messageIncludeUrl: '=messageIncludeUrl'
    },
    templateUrl: '/app/views/partials/components/textInputComp.html'
  }
}]);

Шаблон, использованный в Директиве: (Я использую Laravel в качестве бэкэнда, поэтому я заменил {{ }} на <%%>)

<label name="<% inputData.labelName %>" id="<% inputData.labelId %>" for="" class="control-label label-top" > <% inputData.labelText %> </label> 
<input name="<% inputData.inputName %>" id="<% inputData.inputId %>" class="form-control" type="text" ng-model="modelData" placeholder="<% inputData.placeholder %>" asteriskcheck ng-required="<% inputData.required %>"/> 
<div ng-messages="messageDirty" class="error-list" role="alert">
    <div ng-messages-include src="<% inputData.messageInclude %>"></div>
</div>

Это шаблон, используемый ng-messages-include

<div ng-repeat="errorMessage in messageData[0].text">
    <p ng-message-exp="errorMessage.type">
         <% errorMessage.text %>
    </p>
</div>

Здесь он перестает работать, ng-repeat генерирует элементы, но ng-message-exp не работает ни с чем из того, что я пробовал.

У кого-нибудь есть какое-то решение для этого?? Что я делаю неправильно?

Большое спасибо

0 ответов

Другие вопросы по тегам