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