如何将控制器作用域作为参考传递给我的指令?我想传递一些像
这样的值<mydirective id="data.User.id" name="data.User.name" />
指令,当指令在内部更改时,在控制器中更新它。
控制器中的范围是:
$scope.data= {
User: {
id: '1',
name: 'foobar'
}
}
我知道我可以在指令中使用scope: {...}
链接一些范围属性,例如
scope: {
id: '=',
name: '=',
},
但据我所知,这基本上是&#34;硬编码&#34;?我的意思是更改的数据将始终在控制器中以$ scope.id和$ scope.name的形式提供。但我想更改控制器$ scope.data.User.id中传递的data.User.id
。
我想使用传递给指令的数据来在父控制器中更新它。有什么办法吗?
编辑:我对我想要完成的工作的解释显然存在问题,让我尝试更好地解释一下。
我不想要在控制器范围的特定范围属性之间引入硬依赖关系。我基本上都在寻找一种解决方案,将特定的数据绑定传递给我可以在其中修改的指令。
我不想要这样做:
scope: {
data: "="
}
因为它会使指令依赖于控制器$ scope.data存在。更糟糕的是,它会依赖于$scope.data.User.id
和名称。 我希望将指令重复使用,并将任意两个值传递给指令。传递的值应该在指令内更新,并且更改反映在控制器范围内。两个传递的值(id,name)应该仍然绑定(引用)到控制器$ scope。所以我希望指令中的name
映射到$scope.data.User.name
,而无需对组件进行硬编码。
也许我的整个架构是错误的,如果是这样,我怎么能做得更好?
答案 0 :(得分:3)
您可以传递整个&#34;数据&#34;对象,如:
<mydirective id="data.User.id" name="data" />
然后:
scope: {
data: "="
},
然后,您就可以访问隔离范围内的所有数据&#34;数据&#34;。
您还可以从指令中删除隔离范围,只需在指令的控制器/链接功能中访问它。 希望它能回答你的问题...