6

我正在尝试在 angularJS 中对指令进行自定义嵌入,因为我需要将两个单独的元素嵌入到两个单独的位置。

问题在于,尽管某些指令在转入内容上继续工作,例如ng-bind其他指令,例如ng-ifng-repeat不工作,即使在重新编译具有正确范围的转入元素之后也是如此。

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

正如您在示例中看到的那样ng-bind有效,但ng-if即使它们都在同一范围内并访问相同的值,它们也不会。作品的真假状态都没有ng-if

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

有谁知道如何使这些指令起作用?

4

1 回答 1

1

问题是,无论何时transclude函数执行嵌套指令已经被编译并替换为注释。

我已经通过完全放弃嵌入选项并通过手动请求模板来实现这一点$templateRequest

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

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

在此处查看更新的示例:http: //jsbin.com/rocedarono/3/edit ?html,js,console,output

它当然感觉不是最干净/最佳的解决方案,我对任何其他可以做得更好的解决方案持开放态度。尤其是任何 DOM 事件都必须在$templateRequestPromise 解决后绑定,并在移除事件之前检查其是否存在,$destroy以确保它事先得到解决。

于 2015-05-26T23:20:39.863 回答