我正在尝试创建一个新指令,该指令使用 ng-switch 在几个孩子中进行选择。这个例子只不过是在指令中创建一个 ng-switch,但最终该指令将具有更多的显示糖和一些自动功能,因此创建指令似乎是正确的解决方案。
到目前为止,我的进步是在这个 plunker: http ://plnkr.co/edit/yeCiIOCQswYJHyTozQUZ
我正在做的 $compile 似乎正在评估开关,并确定该值与任何不应该为真的 when 子句不匹配。您可以通过检查呈现的选择器中的元素来看到这一点。
我还担心在这个阶段调用 $compile 似乎已经丢弃了项目列表,所以看起来我在吠叫错误的树。
如何让嵌入的内容在当前状态下重新评估?
更新
我想我叫错了树。Mathew 的回答让我朝着正确的方向开始,所以这是一个很大的帮助。
据我所知,尝试在指令中构造指令(ng-switch)是一个坏主意。在之前的 plunker 中,当编译发生时,模板被永久更改。这意味着如果我更改了不会更新的参数。这就是我首先闻起来很有趣的东西。
这是修改后的 plunker: http ://plnkr.co/edit/WUVgdXjwedxO4356321s
在这种情况下,对重新触发嵌入的 'which' 值有一个监视。该函数删除前一个条目(如果有)并添加新条目。还有一些额外的好处。
首先,我删除了“项目”指令。它没有存在的理由,因为我只是在看课程。其次,我使用 $animator 来进行列表操作。这意味着您可以将 ng-animate 添加到选取器并获得动画效果。
我希望这有助于其他人看到这个问题。