【发布时间】:2014-12-11 12:42:54
【问题描述】:
如果指令在指令定义对象集中没有require 属性,则传递给link 的第四个参数是该指令的控制器。
如果我们做设置require,那么第4个属性就是我们require的控制器(或控制器数组),并且指令失去了对它自己控制器的引用。访问它的最佳方式是什么?
angular.module 'example', []
.directive 'directive1', ->
restrict: 'E'
controller: ($log)->
@sayHi = -> $log.info('hi')
link: (scope, element, attributes, controller)->
controller.sayHi() # works.
.directive 'directive2', ->
restrict: 'A'
require: 'directive1'
controller: ($log)->
@sayBye = -> $log.info('bye')
link: (scope, element, attributes, controller)->
controller.sayHi() # works
# how would I access sayBye?
我意识到我可以将sayBye 放在$scope 上,并通过链接功能中的scope 进行访问,但是有什么方法可以做到这一点不涉及范围?
这是唯一的方法吗?
.directive 'directive2', ->
ownCtrl = {}
restrict: 'A'
require: 'directive1'
controller: ($log)->
@sayBye = -> $log.info('bye')
ownCtrl = this
link: (scope, element, attributes, controller)->
controller.sayHi() # works
ownCtrl.sayBye()
【问题讨论】:
标签: angularjs angularjs-directive