在angularjs中如何将数据从编译传递到链接函数?

在angularjs中如何将数据从编译传递到链接函数?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我根据指令编译函数中的DOM元素进行了一些计算。我需要将结果存储在作用域中,因此我试图将此数据传递给链接函数(该函数可以访问作用域),但我不知道如何执行此操作 我需要在compile函数中执行这些计算,因为我需要在DOM元素被其他指令的链接函数处理之前访问它们(使用指令优先级)。考虑到JavaScript符号的范围,我认为这就足够了。看到这个了吗 您定义了一个必须返回链接函数的编译函数。因为它是一个内部函数,所以父函数中的符号是可见的 app.directive('ui',function($c

我根据指令编译函数中的DOM元素进行了一些计算。我需要将结果存储在作用域中,因此我试图将此数据传递给链接函数(该函数可以访问作用域),但我不知道如何执行此操作


我需要在compile函数中执行这些计算,因为我需要在DOM元素被其他指令的链接函数处理之前访问它们(使用指令优先级)。

考虑到JavaScript符号的范围,我认为这就足够了。看到这个了吗

您定义了一个必须返回链接函数的编译函数。因为它是一个内部函数,所以父函数中的符号是可见的

app.directive('ui',function($compile){
返回{
限制:'E',
模板:“嘿”,
编译:函数($tElement,$tAttrs){
var foo=“有价值的价值”;
console.log('编译'+foo);
返回函数(范围、元素、属性){
log('linking:'+foo);
}
}  
}
});
您可能还想了解 @Josh Davidimiller说:

<div directive1>
  <div directive2>
    <!-- ... -->
  </div>
</div>

我成功地使用了jQuery.data(),但我觉得这不是“角度的方式”,谢谢。我尝试过复制fiddle,但是有两个指令应该会产生不同的输出,如果我在链接函数中执行console.log(foo),它会输出最后一个值两次,而在编译函数中当然可以正常工作。。。奇怪的是,类似的指令在你的小提琴中工作。你在任何时候调用$compile(element)(scope)吗?更重要的是,如果你有嵌套的指令,它将首先调用所有的compile fn,然后是链接(你的link fn严格来说是一个post-link函数),我缺少var-foo!
directive1: compile
  directive2: compile
directive1: controller
directive1: pre-link
  directive2: controller
  directive2: pre-link
  directive2: post-link
directive1: post-link