[英]AngularJS : ng-if and ng-repeat not working after custom transclusion
我试图在angularJS中自定义转换指令,因为我需要将两个单独的元素转换为两个单独的位置。
问题在于,虽然某些指令延续了被转换的内容工作,例如ng-bind
其他如ng-if
或ng-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.