gpt4 book ai didi

jquery - Easypiechart AngularJs 改变颜色

转载 作者:行者123 更新时间:2023-12-01 05:52:50 25 4
gpt4 key购买 nike

我正在尝试使用 ha angularJs 版本的 easypiechart 在值变化时创建简单的比例颜色。当值改变时,颜色也应该改变,从红色变为绿色。

在旧的 easypiechart 版本中,基于 jquery,可以通过执行类似的操作来实现:

barColor: function(percent) {
percent /= 100;
return "rgb(" + Math.round(255 * (1-percent)) + ", " + Math.round(255 * percent) + ", 0)";
}

我做了一个plunker来演示我想做的事情,上面是有 Angular 的,下面是jquery:http://plnkr.co/edit/7yQ1SiIPHFh62yxwnW9e?p=preview

最佳答案

我遇到了与您相同的问题,只是我在自己定义的更复杂的指令中使用了简单的饼图。我花了很长时间弄清楚如何在作用域上传递百分比和选项模型变量,并在外部指令的属性发生变化时进行更改。因此,我放弃了 EasyPieChart 的 Angular 版本,转回了 jQuery 版本(这可能是我的,而不是 EasyPieChart 指令,因为我是 Angular 的新手,所以我对某些概念感到困惑)。

这是我的代码的简化版本,显示了我所做的事情:

我的指令 infoBox.js:

'use strict';

commonApp.directive('infoBox', function () {
return {
restrict: 'E',
replace: true,
scope: {
percent: '@',
text: '@',
content: '@',
textIsNumber: '@'
},
templateUrl: '/directives/infoBox.html',
controller: 'infoBoxController',
}
};
});

我的模板infoBox.html

<div class="infobox">
<div class="infobox-progress">
<div class="easy-pie-chart percentage" data-percent="{{percent}}" data-size="50">
<span class="percent">{{percent}}</span>%
</div>
</div>
<div class="infobox-data">
<span ng-class="{'infobox-data-number': textIsNumber, 'infobox-text': !textIsNumber}" class="infobox-data-number">{{text}}</span>

<div class="infobox-content">
{{content}}
</div>
</div>
</div>

还有我的 Controller infoBoxController.js

'use strict';

commonApp.controller('infoBoxController',
function infoboxController($scope, $log, $attrs, $element) {
var init = function () {
var $chart = $element.find('.easy-pie-chart.percentage')[0];
var barColor = $element.data('color') || (!$element.hasClass('infobox-dark') ? $element.css('color') : 'rgba(255,255,255,0.95)');
var trackColor = barColor == 'rgba(255,255,255,0.95)' ? 'rgba(255,255,255,0.25)' : '#E2E2E2';
$($chart).easyPieChart({
barColor: barColorFunction,
trackColor: trackColor,
scaleColor: false,
lineCap: 'butt',
lineWidth: parseInt(size / 10),
animate: /msie\s*(8|7|6)/.test(navigator.userAgent.toLowerCase()) ? false : 1000,
size: size
});
};
var barColorFunction = function (percent) {
if (percent <= 100) {
return ($element.data('color') || (!$element.hasClass('infobox-dark') ? $element.css('color') : 'rgba(255,255,255,0.95)'));
} else {
return ('rgba(255, 0, 0, 0.7)');
}
};

init();
var update = function () {
var $chart = $element.find('.easy-pie-chart.percentage')[0];
$($chart).data('easyPieChart').update($attrs.percent);
};
$scope.$watch(function () {
return [$attrs.percent];
}, update, true);
}
);

指令用法:

    <info-box class="infobox-blue2" percent="{{modelPercent}}" text="describes pie chart" text-is-number="false" content="more describing pie chart"></info-box>

我对我的属性百分比有一个监视,它运行直接的 jquery 更新函数。 barColorFunction 控制我显示的颜色。

情况略有不同,但我希望这会有所帮助。

关于jquery - Easypiechart AngularJs 改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19614236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com