Я использую ngMessages для проверки формы. Я столкнулся с проблемой, что мой html динамически создает javascript, и angular.message.js загружается до этого. Поэтому я хочу вызвать ngMessage, когда создаются все динамические элементы HTML.Откуда вы указали директиву ngMessages в угловом инициировании, и могу ли я запустить ее вручную?
0
A
ответ
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>
Ссылки
Это звучит как ваш подход все неправильно. Практически никогда не бывает причин идти наружу угловыми для создания элементов DOM, и когда вы это делаете, он должен быть изолирован от директивы, которая может быть скомпонована в угловую. Без твердого примера того, что вы пытаетесь сделать, и почему вы должны выйти наружу, нет никакого решения ситуации, которую вы описываете. – Claies
в стороне от этого, ваша формулировка предполагает неправильное понимание того, как работает угловой. Angular * is * JavaScript, поэтому, говоря, что вы создаете html «динамически с помощью javascript», это запах, который вам просто не известен, как иметь угловую помощь вам с задачей. – Claies
Я делаю formbuilder, в котором HTML генерируется javascript динамически. Всякий раз, когда пользователь перетаскивает элемент. Я сохраняю эти элементы html в формате JSON и передавая его как HTML, используя угловой дезинфицирующее средство. Я попытался выяснить ошибку, и я, вероятно, понял, что мой модуль ngmessages загружается первым и ngsanitize отображается позже. –