Geo*_*ith 6 javascript angularjs transclusion angularjs-directive
我试图在angularJS中自定义转换指令,因为我需要将两个单独的元素转换为两个单独的位置.
问题在于,虽然某些指令在转移的内容上工作,例如ng-bind其他指令,例如ng-if或ng-repeat不执行,即使在重新编译具有正确范围的转换元素之后也是如此.
示例:http://jsbin.com/menakapoma/1/edit?html,js,output
正如您在示例中所看到的那样,ng-bind但是ng-if即使它们都在相同的范围内并且访问相同的值也不会.既不是ng-if作品的真实或虚假状态.
我相信这是因为该ng-if指令被转换为注释,但即使我将transcluding指令的优先级设置为9999并在预连接函数中执行它仍然不起作用.
有谁知道如何使这些指令有效?
问题是,无论transclude函数执行时如何,嵌套指令都已被编译并替换为注释。
我已经通过完全放弃嵌入选项并通过 手动请求模板来实现这一点$templateRequest。
我指定了一个编译函数,该函数用注释占位符替换该元素,以确保在请求期间不会呈现任何内容。
在链接函数中,我手动编译模板,然后用它替换指令的元素。
请参阅此处更新的示例:http://jsbin.com/rocedarono/3/edit ?html,js,console,output
它肯定不像是最干净/最佳的解决方案,我对任何其他可以做得更好的解决方案持开放态度。$templateRequest特别是任何 DOM 事件都必须在Promise 解决后绑定,并在删除$destroy事件之前检查是否存在,以确保它事先解决。