【问题标题】:Is it possible to keep the scope in angular.js, and to modify the template?是否可以将范围保留在 angular.js 中并修改模板?
【发布时间】: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


【解决方案1】:

我终于成功了!!!

事实上,如果你想要附加所有事件和范围,你必须等待编译事件,这是通过 $timeout(fn,0); 完成的。 恶心,我知道,但效果很好!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多