Tôi đang cố gắng tạo biểu đồ bằng cách sử dụng SVG và chỉ thị góc để thay đổi các phần động. Ngay bây giờ tôi đã làm điều này:tạo đường dẫn SVG khi thay đổi giá trị
http://plnkr.co/edit/TcbK7kyzM3tapDISxndh?p=preview
app.directive('pieChart', function($document) {
return {
restrict: "E",
template: '<svg width="500" height="500">' +
'<path d="M100,200 a150,150 0 1,0 150,-150" stroke="black" stroke-width="10" fill="none"></path>' +
'</svg>',
scope: {
value: '='
},
link: function(scope, elem, attr) {
}
}
});
Tôi muốn đồ thị của tôi trông như thế này khi nó 100% giá trị, và khi giá trị - giả sử - 45%, tôi sẽ thích xem dòng này nhưng chỉ với 45% chiều dài từ trung tâm trên cùng. Tôi có lẽ phải tính toán lại giá trị đường dẫn của con đường nhưng tôi muốn hỏi, có thể nào khi tôi thay đổi đường dẫn với JS để làm cho nó hoạt hình trong khi nó thay đổi kích thước?
Cảm ơn bạn trước hoặc nếu bạn biết hướng dẫn hay về nội dung này, hãy liên kết với tôi.
EDIT: Tôi đã đổi chỉ thị thành biểu đồ thanh đơn giản nhưng đây chỉ là ví dụ, tôi biết điều này có thể được thực hiện mà không có SVG vì bạn có thể sử dụng divs nhưng tôi muốn biểu đồ phức tạp hơn sau này.
Dưới đây là một jsfiddle http://jsfiddle.net/fg9e7eo4/1/
Trong ví dụ của tôi, bảng xếp hạng tiếp tục tạo hiệu ứng động và tôi muốn làm cho nó sinh động chỉ một lần và hơn vẫn ở thời điểm đó.
Bằng cách này, đây là chỉ thị mà tôi đang cố gắng ra để làm cho nó làm việc:
testApp.directive('pieChart', function() {
var html =
'<svg width="510" height="20" style="background: #fff">' +
'<path d="{{path}}" stroke="red" stroke-width="10" fill="none">' +
'<animate dur="1s" repeatCount="indefinite" attributeName="d" values="{{path2}}"/>' +
'</path>' +
'</svg>';
return {
restrict: 'E',
template: html,
scope: {
'value': '='
},
link: function(scope, elem, attrs) {
scope.$watch('value', function(newValue, oldValue) {
scope.path = 'M 5 10, L ' + (newValue * 5) + ' 10';
scope.path2 = 'M 5 10, L ' + (oldValue * 5) + ' 10; M 5 10, L ' + (newValue * 5) + ' 10';
elem.children().children().beginElement();
});
}
};
});
Bạn cần $ quan sát giá trị của attr – Dylan
tôi nhận giá trị được cập nhật bởi phạm vi tôi gọi bên trong chỉ thị nhưng tôi không biết khi nào tôi thay đổi đường dẫn bên trong mẫu, cách tạo hiệu ứng đường dẫn từ cuối 'Tới cái mới –
Về cơ bản, bạn sẽ phải sửa đổi đường đi trong khoảng thời gian bằng cách sử dụng một số chức năng nới lỏng. Có các khung công tác (như snap hoặc d3) có thể làm điều này cho bạn - [ở đây] (http://bl.ocks.org/mbostock/31ec1817b2be2660c453) là một ví dụ sử dụng d3. – user1620220