如何拥有多个属性指令,每个指令都有自己的'回调',而不会触发AngularJS中的multidir错误?

时间:2014-05-29 12:33:47

标签: angularjs angularjs-directive angularjs-scope

我想对一个元素应用两个属性指令 - 让我们调用它们my-draggablemy-resizable - 我需要为每个元素指令传递一个回调函数来拖动并调整大小完成操作。如果需要,这些指令可以单独使用。

现在,对于单指令scneario,我会这样做

scope:{
  callback: '&'
}

但是,如果我这样做,我知道这样每个指令将创建自己的隔离范围,这是一个禁忌,导致'错误:$ compile:multidir Multiple Directive Resource Contention'

我非常感谢处理这种情况的一些提示。

这是展示我(无功能)场景的小提琴:
http://jsfiddle.net/crotundu/Ed9uP/2/

非常感谢!

1 个答案:

答案 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])();