1
最近我写了一个D3项目,所以我需要一个动态矩形。我使用Angular创建了一个动态可视化。我有两个input
类型rang
,第一个会改变矩形的“宽度”,第二个会改变“高度”。但是我不知道如何使用角度来绘制动态矩形。 这是我的代码:用Angular指令构建动态矩形
<div ng-app="myApp">
<rect-designer/>
<div>
<input type="range" ng-model="rectWidth" min="0" max="400" value="0"/>
<input type="range" ng-model="rectHeight" min="0" max="700" value="0"/>
</div>
</div>
这里是我的JavaScript代码:
var App = angular.module('myApp', []);
App.directive('rectDesigner', function() {
function link(scope, el, attr) {
var svgwidth=1000, svgheight=600;
var svgContainer = d3.select(el[0]).append('svg').attr('id','svgcontainer')
.attr({ width: svgwidth, height: svgheight });
scope.$watchGroup(['rectWidth','rectHeight'], function() {
svgContainer.append("rect").attr("id", "Rect")
.attr({ width: rectWidth, height: rectHeigh })
.attr('transform', 'translate(' + width/2 + ',' + height/2 + ')')
},true);
}return {
link: link,
scope: {
rectHeigh: '=',
rectWidth: '=',
},
restrict: 'E'
};
});
我不知道是否有什么办法,使svgWidth
和svgheight
动态的,我用这个代码,但结果是undefined
。
scope.$watch(function(){
svgWidth = el.clientWidth;
svgHeight = el.clientHeight;
});
谢谢亲爱的马克,那真是太棒了。 – Gabriel