我想对一个元素应用两个属性指令 - 让我们调用它们my-draggable
和my-resizable
- 我需要为每个元素指令传递一个回调函数来拖动并调整大小完成操作。如果需要,这些指令可以单独使用。
现在,对于单指令scneario,我会这样做
scope:{
callback: '&'
}
但是,如果我这样做,我知道这样每个指令将创建自己的隔离范围,这是一个禁忌,导致'错误:$ compile:multidir Multiple Directive Resource Contention'
我非常感谢处理这种情况的一些提示。
这是展示我(无功能)场景的小提琴:
http://jsfiddle.net/crotundu/Ed9uP/2/
非常感谢!
答案 0 :(得分:4)
我已更新您的fiddle以在链接功能中调用您的回调函数,您显然想要更改它。
标记:(注意删除回调中的括号)
<my-widget data-provider="data"
my-draggable drag-callback="dragDone"
my-resizable resize-callback="resizeDone"></my-widget>
指令:(您需要注入$parse
并删除隔离范围)
$parse(scope[attrs.dragCallback])();
$parse(scope[attrs.resizeCallback])();