html父内容不会出现在ngInclude anglurjs中

时间:2016-01-19 12:47:56

标签: javascript html angularjs angularjs-ng-transclude angularjs-ng-include

我有这两个用于树视图的模板,我想使用第一种方法,但似乎存在问题或者我错过了一些东西。

第一种方法(可取但不起作用)
TreeTemplate.html

<ul>
    <li ng-repeat="node in c.model" style="list-style-type: none;" ng-include="'/_Core/DirectiveCore/Tree/NodeTemplate.html'">
        {{node.text}} <!--It wont show up , the problem is here, any tags will not show up in result-->
    </li>
</ul>

NodeTemplate.html

<ul ng-if="node.nodes">
<li ng-repeat="node in node.nodes" style="list-style-type: none;" ng-include="'/_Core/DirectiveCore/Tree/NodeTemplate.html'">
    {{node.text}}
</li>

TreeTemplate.html中<li></li>中的所有内容都不会出现ng-include

第二个Approch(不可取但有效)

TreeTemplate.html

<ul>
<li ng-repeat="node in c.model" style="list-style-type: none;" ng-include="'/_Core/DirectiveCore/Tree/NodeTemplate.html'">
   <!--there is not any tag here!-->
</li>

NodeTemplate.html

    {{node.text}}
<ul ng-if="node.nodes">
    <li ng-repeat="node in node.nodes" style="list-style-type: none;" ng-include="'/_Core/DirectiveCore/Tree/NodeTemplate.html'">
        {{node.text}}
    </li>
</ul>

请帮我弄清楚发生了什么。

1 个答案:

答案 0 :(得分:1)

ng-include属性正在使用li中的内容替换NodeTemplate内的所有内容。这就是您{{node.text}}没有出现的原因。

你的第二种方法几乎是理想的,我不明白为什么你不喜欢它。根据我的结果,NodeTemplate应该是树中的单个节点,这意味着它应该负责渲染节点文本。

我只会删除{{node.text}}内的li,因为它会被ng-include替换:

{{node.text}}
<ul ng-if="node.nodes">
  <li ng-repeat="node in node.nodes" style="list-style-type: none;" ng-include="'/_Core/DirectiveCore/Tree/NodeTemplate.html'" />
</ul>