我无法将数据从指令返回到控制器。我的指令是使用隔离范围,我根据文档使用'='来进行双向数据绑定,但不知何故,有一种方式是数据绑定,但不是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&amp; ap2Data我想返回刚刚绘制的两个矩形的ID。
我不知道这里发生了什么错误。如果你能搞清楚,请告诉我。
谢谢, 卡希夫
答案 0 :(得分:0)
这种行为真的很奇怪。我实际上创建了一个小测试代码,非常重要,以测试这个问题。如果我传递复杂的数据类型,如数组,json或对象,它工作正常但不知何故它不能使用原始数据类型,如数字,null或字符串。所以我所做的是,我刚用一个数据对象替换了我的两个变量,如:
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的任何更改都将返回给控制器。
谢谢大家调查。