错误:[$ compile:tplrt]指令'checkNav'的模板必须只有一个根元素

nat*_*ila 2 javascript angularjs meteor angular-meteor

我使用meteor + angular,我想在指令中使用templateUrl来包含nav.ng.html
但是我抛出一个错误

Error: [$compile:tplrt] Template for directive 'checkNav' must have exactly one root element  
Run Code Online (Sandbox Code Playgroud)

index.html的:

 5 <body ng-app='checkApp' ng-controller='CheckCtrl'>
 6   <check-nav></check-nav>
 7 </body>  
Run Code Online (Sandbox Code Playgroud)

directive.js

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

nav.ng.html

<div>test</div>
Run Code Online (Sandbox Code Playgroud)

我怎么修好它?

Omr*_*ron 5

这是因为你的指令所呈现的HTML(nav.ng.html)具有兄弟元素而不是包含所有元素的元素.

例如,这将导致错误:

<div>One</div>
<div>Two</div>
Run Code Online (Sandbox Code Playgroud)

这没关系:

<div>
    <div>One</div>
    <div>Two</div>
</div>
Run Code Online (Sandbox Code Playgroud)

所以你应该修改HTML只有一个根元素,错误就会消失.