directive中的require的用法
require : '^?accordion', 这里的用法有什么讲究?求指导
require : '^?accordion', 这里的用法有什么讲究?求指导
2015-11-18
require - 请求另外的controller,传入当前directive的linking function中。require需要传入一个directive controller的名称。如果找不到这个名称对应的controller,那么将会抛出一个error。名称可以加入以下前缀:
? - 不要抛出异常。这使这个依赖变为一个可选项。
^ - 允许查找父元素的controller
补充详解:
仅从字面判断,使用directive指令require的选项,其值为:'^?accordion'。选项中带^,$compile服务会查找一个名叫accordion的控制器,如果没有找到,就会抛出一个错误。^前缀意味着指令将会在它的父元素上面搜索控制器(如果没有^前缀,指令默认只在所属元素上搜索指定的控制器)。 这里accordion控制器可以是通过controller选项为指令定义一个控制器, 也可以是指向带有ngController=“accordion”指令的模板域。另外需要注意的是 当一个指令需要(require)一个控制器时,它会接收该指令的控制器实例作为link函数的第四个参数, 通过它,link函数可以使用控制器实例上的方法。
举报