1
私はいくつかの階層的なディレクティブを持っていますが、コントローラ内にいくつかの関数を持たなければなりません。それ。しかし、この1つのディレクティブは親ディレクティブのコントローラーも参照する必要がありますが、コントローラーでこれを行う方法はわかりません(リンク()の中でどのように知っていますか?親ディレクティブのコントローラをディレクティブコントローラに渡します( "link"関数のように)
controller: function($scope){},
link: function (scope, ..., parentCtrl){
scope.parentCtrl = parentCtrl;
}
が、コントローラがある、またはそれはOK、それの後にリンク機能が実行されているので、それは、奇妙なようだ:スコープでそれを行うことが可能なはず?私は混乱しているし、それは悪いデザインかもしれないと思う?
図:
ParentParentDirective
controller: function(service){
this.service = service;
}
ParentDirective
controller: function(){
this.callOnService = function(id){
???ParentParentDirective???.service.callSth(id);
}
}
ChildDirective
link(scope, ...,ParentDirectiveCtrl){
scope.makeChanges = ParentDirectiveCtrl.callOnService;
}
使用は '必要です: '^ ParentDirective''または'が必要です。' ^^ ParentParentDirective''を。下の「通信する指令の作成」のhttps://docs.angularjs.org/guide/directiveを参照してください。 – Claies