这个链接函数如何知道“;tabsCtrl"参考文献
How does this link function know what "tabsCtrl" references?
阅读AngularJS文档时,我在标题为"创建通信指令"的部分中看到了这篇文章的信息。。。进一步看这个例子的js代码,我们看到它们传递了一个对另一个指令中使用的控制器的引用,但它们没有解释为什么它能工作,也没有解释如何正确使用它(怎么回事,伙计?)。
那么,为什么会这样呢?如果我的指令没有链接在一起/在单独的文件中,它会起作用吗?如果他们都在不同的地方注册到一个模块怎么样?这似乎是一个奇怪的地方。。
link: function(scope, element, attrs, tabsCtrl) {
tabsCtrl.addPane(scope);
Tl;DR它如何知道Ctrl引用了哪些选项卡???
答案在文档中:
myPane指令有一个值为^myTabs的require选项。当指令使用此选项时,$compile将抛出错误,除非找到指定的控制器。^前缀表示此指令在其父控制器上搜索控制器(不带^前缀指令将仅在其自己的元素上查找控制器)。
那么这个myTabs控制器是从哪里来的呢?指令可以指定控制器使用毫不意外命名的控制器选项。作为你可以看到,myTabs指令使用了此选项。就像ngController,此选项将一个控制器附加到指令。
回顾myPane的定义,请注意其链接函数:tabsCtrl。当指令需要控制器时接收该控制器作为其链接函数的第四个自变量。利用这一点,myPane可以调用的addPane函数myTabs。
将其转换为人类语言:myPane
中的require: '^myTabs'
在myTabs
(好吧,myTabs
应该是myPane
的父指令)指令中搜索控制器,并将其作为第四个参数传递给myPane
中的link: function()
。
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何提取“;href"最近列表项中的属性值
- CKEditor如何允许href="javascript:void(0)"在小部件中
- 这个链接函数如何知道“;tabsCtrl"参考文献