我该如何将控制器作用域作为引用传递给我的指令?我想传递一些值,例如:
我知道我可以在指令中使用
因为这会使指令依赖于控制器的 $scope.data 存在。更糟糕的是,它还将取决于 $scope.data.User.id 和 name。我希望使指令可重用,并使用任何我传递给指令的两个值。这两个传递的值 (id, name) 应该在指令内更新,并且更改应反映在控制器作用域中。这两个传递的值 (id, name) 应该仍然绑定 (引用) 到控制器的 $scope 上。因此,我希望指令中的 name 映射到 $scope.data.User.name,而不需要将其硬编码到组件中。
也许我的整个架构都错了,如果是这样,我该怎么做得更好呢?
<mydirective id="data.User.id" name="data.User.name" />
将指令内部的更改更新到控制器中。
控制器中的作用域为:
$scope.data= {
User: {
id: '1',
name: 'foobar'
}
}
我知道我可以在指令中使用
scope: {...}
来链接一些作用域属性,就像这样。 scope: {
id: '=',
name: '=',
},
但就我所理解的而言,这基本上是“硬编码”吗?我的意思是更改后的数据将始终作为$ scope.id和$ scope.name在控制器中提供。但我想在控制器$scope.data.User.id中更改传递的data.User.id
。
我想使用传递给指令的数据来更新父控制器中的数据。有什么办法可以做到这一点吗?
编辑:显然我对我想要完成的事情的说明存在问题,请让我更好地解释一下。
我不想在控制器作用域的特定作用域属性之间引入硬依赖关系。我基本上正在寻找一种解决方案,以向指令传递可修改的特定数据绑定。
我不想这样做:
scope: {
data: "="
}
因为这会使指令依赖于控制器的 $scope.data 存在。更糟糕的是,它还将取决于 $scope.data.User.id 和 name。我希望使指令可重用,并使用任何我传递给指令的两个值。这两个传递的值 (id, name) 应该在指令内更新,并且更改应反映在控制器作用域中。这两个传递的值 (id, name) 应该仍然绑定 (引用) 到控制器的 $scope 上。因此,我希望指令中的 name 映射到 $scope.data.User.name,而不需要将其硬编码到组件中。
也许我的整个架构都错了,如果是这样,我该怎么做得更好呢?
scope: {id:"=",name:"="}
。 - Khanh TO