【问题标题】:AngularJS - how to have a directive with a dynamic sub-directiveAngularJS - 如何拥有一个带有动态子指令的指令
【发布时间】:2013-02-01 09:53:15
【问题描述】:

真的在为此苦苦挣扎 - 已经尝试了我能想到的所有方法。希望有人可以提供帮助。

我有一个指令可以为我创建自定义控件的轮廓。自定义控件的中心部分将由另一个动态生成的指令表示,该指令基于外部指令上的范围变量的值。范围变量包含内部指令的名称。我这样做是因为我的页面将有多个动态生成的元素,它们都具有共同的布局但内部内容不同。

即我的外部指令的一个例子:

<div data-inner="{{inner}}">
    <!-- div content here --->
<div {{inner}} />

{{inner}} 设置为另一个指令的名称 - 在本例中为 search。因此,我的页面应该变成:

<div data-inner="search">
    <!-- div content here --->
<div search />

下部 div 上的 search 也被该指令的内容替换。

有什么想法吗?

更新 这是一个基本的jsFiddle 代表我遇到的问题 - 注意第三个 div 没有显示。

【问题讨论】:

  • 你不是要写
    search> 而不是

标签: angularjs


【解决方案1】:

我创建了一个小提琴here

这些是指令。

<script type="text/ng-template" id="one">
    <div class="one"></div>
</script>
<script type="text/ng-template" id="two">
     <div class="two"></div>
</script>

然后在这里进行动态加载

<div ng-repeat='template in inner' ng-include='template'></div>

看看这是否对你有帮助,并解决你的目的。我将每个指令制作成一个模板,然后使用 ng include

【讨论】:

  • 完美!非常感谢。如果我能给你一个虚拟的金星,我会的,这也是一个很好的优雅解决方案。
【解决方案2】:

试试这个小提琴http://jsfiddle.net/xpKwb/12/

你可以使用 ngSwitch

<div ng-repeat='template in inner'>
    <div ng-switch on="template">
        <div ng-switch-when="one">
            <div class='one'></div>
        </div>
        <div ng-switch-when="two">
            <div class='two'></div>

        </div>
    </div>

【讨论】:

  • 这不是创建两个模板,而只是利用它们的可见性?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 2013-02-05
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
相关资源
最近更新 更多