2015-10-12 2 views
0

Я использую ngMessages для проверки формы. Я столкнулся с проблемой, что мой html динамически создает javascript, и angular.message.js загружается до этого. Поэтому я хочу вызвать ngMessage, когда создаются все динамические элементы HTML.Откуда вы указали директиву ngMessages в угловом инициировании, и могу ли я запустить ее вручную?

+0

Это звучит как ваш подход все неправильно. Практически никогда не бывает причин идти наружу угловыми для создания элементов DOM, и когда вы это делаете, он должен быть изолирован от директивы, которая может быть скомпонована в угловую. Без твердого примера того, что вы пытаетесь сделать, и почему вы должны выйти наружу, нет никакого решения ситуации, которую вы описываете. – Claies

+0

в стороне от этого, ваша формулировка предполагает неправильное понимание того, как работает угловой. Angular * is * JavaScript, поэтому, говоря, что вы создаете html «динамически с помощью javascript», это запах, который вам просто не известен, как иметь угловую помощь вам с задачей. – Claies

+0

Я делаю formbuilder, в котором HTML генерируется javascript динамически. Всякий раз, когда пользователь перетаскивает элемент. Я сохраняю эти элементы html в формате JSON и передавая его как HTML, используя угловой дезинфицирующее средство. Я попытался выяснить ошибку, и я, вероятно, понял, что мой модуль ngmessages загружается первым и ngsanitize отображается позже. –

ответ

0

ngMessages директива инициализируется изменения в form, $rootScope или $scope объекта, который используется в привязке данных. Директива ngMessage используется для привязки к родительскому узлу, и каждая директива ngMessages используется для привязки к определенному ребенку, значение которого равно true или false.

Используйте следующий процесс:

  • фильтр, который впрыскивает А условие templateCache
  • в фильтре, который добавляет сформированную строку шаблона HTML и его идентификатор в templateCache
  • условие в фильтре который устанавливает значение ключа, указанного в директиве ngMessages к true

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular-messages.js"></script> 
 

 
<script> 
 
    angular.module('foo', ['ngMessages']); 
 
</script> 
 

 
<script> 
 
function bop(model, view) 
 
{ 
 
var i = 0, len = 100000, buz = ""; 
 
    
 
for (i; i < len; i++) 
 
    { 
 
    buz = buz.concat(i); 
 
    } 
 
    
 
bop.cache.put('listContent', buz); 
 
view.loaded = true; 
 
    
 
return model; 
 
} 
 

 
function baz($templateCache) 
 
    { 
 
    bop.cache = $templateCache; 
 
    
 
    return bop; 
 
    } 
 

 
baz.$inject = ['$templateCache','$rootScope']; 
 

 
angular.module('foo').filter('baz', baz); 
 
</script> 
 

 
<div ng-app="foo"> 
 
    <form name="myForm"> 
 
    <label>Check Me<input type="checkbox" ng-model="$root['required']"></label> 
 
    <div ng-include="'listContent' | baz:myForm"></div> 
 
    <div ng-messages="$root" style="color:green" role="alert"> 
 
    <div ng-message="required"></div> 
 
    </div> 
 
    <div ng-messages="myForm"> 
 
    <div ng-message="loaded" style="color:blue">Loaded</div> 
 
    </div> 
 
    
 
</div>

Ссылки