【发布时间】:2015-11-02 16:01:58
【问题描述】:
我非常卡在我的指令中:这是代码的一部分:
var $template = angular.element("<div></div>");
$template.append($compile(template)(scope));
$template.find('block').html($block.html());
$element.replaceWith($template.html());
$compile($element.contents())(scope);
我尝试检索模板的内容,将其附加到布局中,然后编译。
通过这样做,我失去了所有相关的范围。 (即:对 a 进行 ng-click 不起作用)
是否可以保留已编译模板的关联范围?如果没有,我还有什么选择?
非常感谢,
雷米
编辑 请参阅评论以获取 plunker 中的示例, 再次感谢
编辑
给定的指令应该能够执行以下操作: 视图.html:
<layout extends='/layout.html'>
<block name="content">TOTO</block>
<block name="content2">TOTO2</block>
</layout>
layout.html:
<navbar></navbar>
<block name="content"></block>
<block name="content2"></block>
<footer></footer>
输出:
<navbar></navbar>
<block name="content">TOTO</block>
<block name="content2">TOTO2</block>
<footer></footer>
这有意义吗?
编辑
是否可以做类似的事情: $element.replaceWith($template); 知道模板已经在 DOM 上了吗?
谢谢大家
【问题讨论】:
-
你能用 plunkr 编码吗?
-
是的,我会尽快发布
-
plnkr.co/edit/e3sRi7?p=info 提前致谢。在这个例子中,括号不起作用,我不知道为什么,但在我的应用程序中,我更接近,只有事件没有附加
-
我不明白,这个指令的目的是什么?这看起来不是必需的。除此之外,我认为它实际上并没有像你想象的那样做。嵌入是一个棘手的野兽。
-
我正在尝试制作一个布局模板系统,但我确实被卡住了。我会回到更基本的东西......
标签: javascript angularjs template-engine