2

meteor+angular を使用しています。ディレクティブで templateUrl を使用して nav.ng.html をインクルードしたいのです
が、エラーがスロー されます

Error: [$compile:tplrt] Template for directive 'checkNav' must have exactly one root element  

index.html:

 5 <body ng-app='checkApp' ng-controller='CheckCtrl'>
 6   <check-nav></check-nav>
 7 </body>  

ディレクティブ.js

  1 angular.module 'checkApp'
  2   .directive 'checkNav', () ->
  3   ┊ restrict: 'E'
  4   ┊ replace: true
  5   ┊ templateUrl: 'client/templates/check-views/nav.ng.html'

nav.ng.html

<div>test</div>

どうすれば修正できますか?

4

2 に答える 2

5

これは、ディレクティブがレンダリングしている HTML ( nav.ng.html) に、すべてをラップする要素ではなく兄弟要素があるためです。

たとえば、次のエラーが発生します。

<div>One</div>
<div>Two</div>

これで問題ありません。

<div>
    <div>One</div>
    <div>Two</div>
</div>

したがって、ルート要素が 1 つだけになるように HTML を修正する必要があります。そうすれば、エラーは解消されます。

于 2015-07-08T15:21:49.743 に答える
1

nav.ng.htmlは次のようになります。

<div>
  <div>test</div>
</div>

うまくいかない場合は?次に、 index.htmlも次のように変更します。

<body ng-app='checkApp' ng-controller='CheckCtrl'>
  <div>   
     <check-nav></check-nav>
  </div>
 </body>  
于 2015-07-14T13:38:03.267 に答える