为了账号安全,请及时绑定邮箱和手机立即绑定

directive中的require的用法

require : '^?accordion',  这里的用法有什么讲究?求指导

正在回答

2 回答

666

1 回复 有任何疑惑可以回复我~
简单点:当前directive的llink函数依赖使用了directive中controller实例(即accordion),会在当前指令及其父元素的controller查找accordion,未找到不报异常。

require - 请求另外的controller,传入当前directive的linking function中。require需要传入一个directive controller的名称。如果找不到这个名称对应的controller,那么将会抛出一个error。名称可以加入以下前缀:

? - 不要抛出异常。这使这个依赖变为一个可选项。

^ - 允许查找父元素的controller


补充详解:

仅从字面判断,使用directive指令require的选项,其值为:'^?accordion'。选项中带^,$compile服务会查找一个名叫accordion的控制器,如果没有找到,就会抛出一个错误。^前缀意味着指令将会在它的父元素上面搜索控制器(如果没有^前缀,指令默认只在所属元素上搜索指定的控制器)。 这里accordion控制器可以是通过controller选项为指令定义一个控制器, 也可以是指向带有ngController=“accordion”指令的模板域。另外需要注意的是 当一个指令需要(require)一个控制器时,它会接收该指令的控制器实例作为link函数的第四个参数, 通过它,link函数可以使用控制器实例上的方法。

4 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
AngularJS实战
  • 参与学习       205465    人
  • 解答问题       1158    个

一起学习AngularJS的基础教程,通过实例学习并学会AngularJS

进入课程

directive中的require的用法

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信