Недавно я написал проект с D3, поэтому мне нужен динамический прямоугольник. Я использовал Angular для создания динамической визуализации. У меня есть два input
типа rang
, первый из которых изменит «ширину» прямоугольника, а второй изменит «высоту». Однако я не знаю, как использовать угловые для рисования динамический прямоугольник. Это мой код:Построить динамический прямоугольник с угловой директивой
<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