Javascript angular ui示例中的angular link函数IEElement magic

Javascript angular ui示例中的angular link函数IEElement magic,javascript,angularjs,angular-ui,Javascript,Angularjs,Angular Ui,Angular在链接函数中提供当前作用域的实例元素 IEElement angular Pass能够完成标准HTML元素之外的工作。你是怎么做到的?首先用jQuery包装它 本节中的链接元素如何获得tinymce方法,例如第49行所示的方法: elm.tinymce(); 我知道ui-tinymce属性链接到名为uiTinymce的指令,并且tinymce包含在主html中,但我不明白elm是如何获得方法tinymce的 作为参考,我从下面提供了有关IELENT的相关文档 链接功能: link

Angular在链接函数中提供当前作用域的实例元素

IEElement angular Pass能够完成标准HTML元素之外的工作。你是怎么做到的?首先用jQuery包装它

本节中的链接元素如何获得tinymce方法,例如第49行所示的方法:

elm.tinymce();
我知道ui-tinymce属性链接到名为uiTinymce的指令,并且tinymce包含在主html中,但我不明白elm是如何获得方法tinymce的

作为参考,我从下面提供了有关IELENT的相关文档

链接功能:

link函数负责注册DOM侦听器以及更新DOM。>它在克隆模板后执行。这是大多数指令逻辑>的放置位置

范围-范围-指令用于注册手表的范围

iElement-实例元素-要使用指令的元素。仅在postLink函数中操作元素的子元素是安全的,因为子元素已经链接

从页面:

注意:Angular中的所有元素引用始终使用jQuery包装 或jqLite;它们从来都不是原始的DOM引用

因此,是的,
iElement
参数是一个jQueryLite,或完整的jQuery对象,它具有jQuery/jQueryLite提供的所有相关附加方法

这包括通过jQuery的插件机制添加的任何附加方法,其效果是能够直接在jQuery对象本身上调用这些方法

因此,TinyMCE JS文件将有代码添加到所有jQuery对象的
.TinyMCE()
函数中,这就是
iElement
对象的方式


这有道理吗?

这有道理。查看AngularUI主站点的源代码,我看到他们正在加载jquery.tinymce.js,这与您所说的一致。为了确保我得到了它,我模拟了一个类似的例子,它集成了aloha.js所见即所得编辑器。看起来Aloha也在jQuery中包装了自己(当作为元素传递时它是双重包装的吗?)使用
Aloha.bind('some-event'函数(){})之间有什么区别
elm.aloha.bind('some-event'函数(){})?因此,从Aloha站点的外观和源代码来看,这是一个使用事件委派来限制所处理事件范围的案例。如果您知道JS中事件是如何在树上冒泡的,那么您将知道您可以将单个事件处理程序绑定到顶级节点,如
标记(这是
Aloha.bind()
在幕后所做的),也可以将其直接绑定到元素本身。或者,您可以将它绑定到事件源之上的元素,但要比
标记更接近它,我认为
elm.aloha.bind(…)
就是这样做的。有什么意义吗?太好了,我想我明白了。我在上面列出的两个事件回调中都放了一个console.log('event fired')。会激发Aloha.bind()事件,但当替换为elm.Aloha.bind()事件绑定时,不会激发事件(或者至少不会打印console.log(“激发的事件”)。无论如何,我很感激上面的答案。我开始悬赏并奖励给你是否礼貌?@Funkyeah我不认为悬赏是合适的,因为我对这里的代表积分上瘾了,但我感谢你将我的答案标记为正确并投票表决。
function link(scope, iElement, iAttrs, controller) { ... }