繁体   English   中英

AngularJS:自定义转换后ng-if和ng-repeat不起作用

[英]AngularJS : ng-if and ng-repeat not working after custom transclusion

我试图在angularJS中自定义转换指令,因为我需要将两个单独的元素转换为两个单独的位置。

问题在于,虽然某些指令延续了被转换的内容工作,例如ng-bind其他如ng-ifng-repeat ,但即使在重新编译具有正确范围的转换元素之后也是如此。

示例: http//jsbin.com/menakapoma/1/edit?html,js,output

正如您在示例中看到的那样, ng-bind可以工作,但是ng-if虽然它们都在同一个范围内并且访问相同的值,但它们都没有。 ng-if的真或假状态都ng-if

我相信这是因为ng-if指令被转换为注释,但即使我将transcluding指令的优先级设置为9999并在预连接函数中执行它仍然不起作用。

有谁知道如何使这些指令有效?

问题是,不管是什么的时候了transclude函数执行嵌套的指令已经被编译和备注。

我已经设法通过完全转发transclude选项来实现这一点,并通过$templateRequest手动请求$templateRequest

我指定了一个编译函数,它用一个注释占位符替换该元素,以确保在请求期间不呈现任何内容。

在链接函数中,我手动编译模板,然后用它替换指令的元素。

请参阅此处的更新示例: http//jsbin.com/rocedarono/3/edit?html,js,console,output

它当然不是最干净/最优的解决方案,我对任何其他可以做得更好的解决方案持开放态度。 特别是因为任何DOM事件必须在$templateRequest promise被解析之后被绑定并且在$destroy事件中被删除之前检查是否存在以确保它事先被解析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM