当使用template属性而不是templateUrl属性时,我遇到了一个奇怪的问题。
在后一种情况下,我可以在单个元素上定义具有独立作用域的多个指令或transclude选项。这就像预期的一样,我没有发现任何错误。
但是,当简单地复制模板并将其设置为指令中的template时,角突然开始抱怨多个指令请求在同一个元素上隔离作用域或转换。
看看我的普鲁克尔。它在控制台中抛出一个错误。但是,如果要替换(在scripts.js中)
template: "<ul kendo-menu k-orientation=\"'vertical'\" k-direction=\"'right'\"></ul>",使用
templateUrl: 'menu.html'该指令有效(尝试右键单击文本)。文件的内容是,与字符串中的内容完全相同。
有人知道为什么会发生这种不一致吗?
编辑:为了避免混淆,我需要transclude选项,因为我想重用这个元素,并且能够配置在单独使用的每个位置显示哪些元素。
发布于 2014-02-20 07:14:13
显然,这种不一致已经修复在新版本的角形。
我们使用的是1.0.8,只有在使用template选项时才会发生正确的行为(在多个指令要求对同一个元素进行转换时抛出错误)。当使用templateUrl选项时,不会抛出错误,并且指令按预期工作(这仍然困扰着我的头脑)
编辑:使用compile函数修复它,并删除replace选项。工作示例这里。
发布于 2014-02-19 15:42:58
我无法重现这个问题,但这里的问题实际上是replace: true在menu指令的定义中。
这意味着kendo和menu指令都试图依次替换元素。保存menu包装修复了问题:http://plnkr.co/edit/vGhEVNfz35elCtxXSMxO?p=preview
发布于 2014-02-19 18:13:26
问题来自transclude: true,您还忘记在模板中添加<li>元素。如果定义了replace: true,它将用其子元素替换原始元素。
它适用于我,无论是使用template还是templateUrl:更新柱塞
编辑:关于这方面有一个悬而未决的问题:https://github.com/angular/angular.js/issues/4357
https://stackoverflow.com/questions/21884891
复制相似问题