具有ng-messages-include的AngularJS ng-template

时间:2015-02-23 16:49:30

标签: javascript html angularjs

我尝试创建一个脚本类型的text / ng-template,将我的错误消息模板放入$ templateCache。我希望这个脚本文件是远程的,在HTML之外的它自己的文件中。

<script type="text/ng-template" id="error-messages">
  <span ng-message="required">This field is required.</span>
  <span ng-message="min">This number must be larger than {{min}}.</span>
  <span ng-message="max">This number must be smaller than {{max}}.</span>
  <span ng-message="number">A number is required.</span>
  <span ng-message="date">A date is required.</span>
</script>

然后在HTML中我想引用这个模板,我认为应该在$ templateCache中,我可以通过Id访问它。

<form name="userForm">       
      <div class="form-group">
        <label for="requiredInput">Required</label>
        <input type="text" class="form-control" id="required" name="requiredInput" 
        ng-model="user.required" required />
        <div ng-messages="userForm.requiredInput.$error" ng-messages-include="error-messages"></div>
      </div>
</form>

如果我将脚本与HTML内联,它可以正常工作,但我希望它在远程文件中。当我将其移动到远程文件时,我的HTML无法找到我的模板错误消息。

这是我第一次分享的Plunker。如果你无法解决,请告诉我。 http://plnkr.co/edit/NgSm7piaECWBab1LOmp3?p=preview

1 个答案:

答案 0 :(得分:13)

请检查plunker - http://plnkr.co/edit/luhUuZURCOeHSuEhi11x?p=info

angular.module('app', ['ngMessages'])
.run(function ($templateCache, $http) {
  $http.get('scriptTemplate.html')
  .then(function(response) {
    $templateCache.put('error-messages', response.data); 
  })
})

在应用程序的运行阶段使用$ http加载ng-messages-include模板并将其保存在templateCache中。