Return 从 d3 angular 指令到控制器的值
Return value from d3 angular directive to controller
我在将数据从指令发送到控制器时遇到问题return。我的指令是隔离范围,根据文档,我在其中使用“=”来进行 2 种方式的数据绑定,但不知何故存在一种方式的数据绑定,但不是 2 种方式。我对指令中的数据所做的更改不会被推回控制器。
一些代码片段:
controller
========
$scope.ap1 = "1111";
$scope.ap2 = "1111";
html
=======
<d3-zones
ng-if="vzones"
zone-data="vzones"
ap1-data="ap1"
ap2-data="ap2">
</d3-zones>
directive
========
scope: {
zoneData: '=zoneData',
ap1Data: '=ap1Data',
ap2Data: '=ap2Data'
},
And later in the link function, i am updating these two values on a particular event like this:
scope.$apply(function() {
scope.ap1Data = somevalue;
scope.ap2Data = somevalue;
});
在我的指令中,我使用 d3 绘制一些矩形。在 ap1Data 和 ap2Data 中,我想 return 刚刚绘制的两个矩形的 ID。
我不知道这里出了什么问题。如果你能弄明白,请告诉我。
谢谢,
卡西夫
行为真的很奇怪。我实际上创建了一个小的测试代码,非常切题,来测试这个问题。如果我传递像数组、json 或对象这样的复杂数据类型,它可以正常工作,但不知何故它不适用于原始数据类型,如数字、空值或字符串。所以我所做的是,我刚刚用一个数据对象替换了我的两个变量,例如:
controller
========
$scope.dataModel {
ap1: "1111"
ap2: "2222"
}
html
=======
<d3-zones
ng-if="vzones"
zone-data="vzones"
ap1-data="dataModel.ap1"
ap2-data="dataModel.ap2">
</d3-zones>
directive
========
scope: {
zoneData: '=zoneData',
ap1Data: '=ap1Data',
ap2Data: '=ap2Data'
},
And later in the link function, i am updating these two values on a particular event like this:
scope.$apply(function() {
scope.ap1Data = somevalue;
scope.ap2Data = somevalue;
});
然后将此 dataModel 传递给上面给出的指令。现在它工作正常。对此 datModel 的任何更改都会返回到控制器。
谢谢大家的关注。
我在将数据从指令发送到控制器时遇到问题return。我的指令是隔离范围,根据文档,我在其中使用“=”来进行 2 种方式的数据绑定,但不知何故存在一种方式的数据绑定,但不是 2 种方式。我对指令中的数据所做的更改不会被推回控制器。 一些代码片段:
controller
========
$scope.ap1 = "1111";
$scope.ap2 = "1111";
html
=======
<d3-zones
ng-if="vzones"
zone-data="vzones"
ap1-data="ap1"
ap2-data="ap2">
</d3-zones>
directive
========
scope: {
zoneData: '=zoneData',
ap1Data: '=ap1Data',
ap2Data: '=ap2Data'
},
And later in the link function, i am updating these two values on a particular event like this:
scope.$apply(function() {
scope.ap1Data = somevalue;
scope.ap2Data = somevalue;
});
在我的指令中,我使用 d3 绘制一些矩形。在 ap1Data 和 ap2Data 中,我想 return 刚刚绘制的两个矩形的 ID。
我不知道这里出了什么问题。如果你能弄明白,请告诉我。
谢谢, 卡西夫
行为真的很奇怪。我实际上创建了一个小的测试代码,非常切题,来测试这个问题。如果我传递像数组、json 或对象这样的复杂数据类型,它可以正常工作,但不知何故它不适用于原始数据类型,如数字、空值或字符串。所以我所做的是,我刚刚用一个数据对象替换了我的两个变量,例如:
controller
========
$scope.dataModel {
ap1: "1111"
ap2: "2222"
}
html
=======
<d3-zones
ng-if="vzones"
zone-data="vzones"
ap1-data="dataModel.ap1"
ap2-data="dataModel.ap2">
</d3-zones>
directive
========
scope: {
zoneData: '=zoneData',
ap1Data: '=ap1Data',
ap2Data: '=ap2Data'
},
And later in the link function, i am updating these two values on a particular event like this:
scope.$apply(function() {
scope.ap1Data = somevalue;
scope.ap2Data = somevalue;
});
然后将此 dataModel 传递给上面给出的指令。现在它工作正常。对此 datModel 的任何更改都会返回到控制器。
谢谢大家的关注。