根据
the docs(具体来说,比较指令与组件的表),角度分量允许需要其他指令(或仅仅是组件?).但是,组件没有链接功能,可以访问所需的控制器.
The source与文档相反,似乎表明在创建组件时不可能使用“require”.哪个是真的?
解决方法
引用的来源是过时的.从1.5.0开始,其他组件中的组件控制器
can be required(同样适用于指令).
当require
object and bindToController
一起使用时,所需的控制器实例将作为属性分配给电流控制器.
因为在指令链接期间发生这种情况,控制器构造函数中不需要所需的控制器,所以$onInit
magic method就在那里.如果存在,则为it is executed right after adding required controllers.
都
app.directive('someDirective',function () { return { scope: {},bindToController: {},controllerAs: 'someDirective',require: { anotherDirective: '^anotherDirective' },controller: function ($scope) { console.log("You don't see me",this.anotherDirective); this.$onInit = function () { console.log("Now you do",this.anotherDirective); }; } } });
和
app.component('someComponent',{ controllerAs: 'someComponent',require: { anotherDirective: '^anotherDirective' },controller: function ($scope) { console.log("You don't see me",this.anotherDirective); this.$onInit = function () { console.log("Now you do",this.anotherDirective); }; } });
声明样式在引擎盖下,可以在1.5中互换使用,组件是简洁的.