让我举一个例子,如果我可以使用3个组件:
<grandparent>
<parent>
<grandson>
如果祖父母有一个对象,那就让我们说一个人
const person = {
name: 'William',
age: 102
}
孙子如何能够从祖父母那里继承这个价值?
<title={{ $ctrl.person.name }}>
不起作用,因为$ctrl
将是父母。
希望我的轻松榜样如此。
答案 0 :(得分:1)
以下是更新后的代码:
<grand-parent>
<cbs-cus-comp com-bind='grandParentCntAs.name'>
<child child-com-bind='cbsCusCompCntAs.name'></child>
</cbs-cus-comp>
</grand-parent>
您需要提供类似下面的内容才能实现这一目标:
var cbsCusComp = {
transclude : true,
require: {grandParentComp:'^grandParent'},
template : 'Parent : <b>{{cbsCusCompCntAs.comBind}}</b><br /><ng-transclude></ng-transclude>',
controller : cbsCusCompCnt,
controllerAs: 'cbsCusCompCntAs',
bindings : {comBind:'='}
};
答案 1 :(得分:0)
你在这里几乎没有选择:
向下钻取person对象,将其传递给父对象,从父对象传递给孙子
使用服务存储人物对象,孙子使用该服务获取人物对象
使用redux
答案 2 :(得分:0)
来自文档:
组件间通信
指令可以
require
其他指令的控制器以实现彼此之间的通信。这可以通过为require
属性提供对象映射来在组件中实现。对象键指定属性名称,在该属性名称下,所需的控制器(对象值)将绑定到需要组件的控制器。
有关详细信息,请参阅AngularJS Comprehensive Directive API Reference - require