从角度启动的ngMessages指令在哪里,我可以手动启动吗?

时间:2015-10-12 13:38:52

标签: angularjs validation ng-messages

我正在使用ngMessages进行表单验证。我面临的问题是我的html是通过javascript动态创建的,而angular.message.js在此之前加载。所以我想在创建所有动态HTML元素时触发ngMessage。

1 个答案:

答案 0 :(得分:0)

ngMessages指令由数据绑定中使用的form$rootScope$scope对象的更改初始化。 ngMessage指令用于绑定父节点,每个ngMessages指令用于绑定到值为truefalse的特定子节点。

使用以下过程:

  • 注入templateCache
  • 的过滤器
  • 过滤器中的条件,它将生成的HTML模板字符串及其ID添加到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>
&#13;
&#13;
&#13;

<强>参考