как изменить дискретный цвет полосы при наведении мыши - angular-nvd3

Я хочу создать диаграмму для просмотра и дат. Поэтому я использовал плагин angular-nvd3. Диаграмма отображается нормально. У меня одинаковый цвет для всех отдельных элементов панели. Мне нужно изменить цвет определенной полосы в событии moseover. Я пробовал следующие методы.

(1) d3.select(this).atrr('rect').style('fill':'red');
(2) $scope.options.chart[e.index].color = "#222";

Но ни один из них не работает. Есть какой-либо способ сделать это.

$scope.options = {
  chart: {
  type: 'discreteBarChart',
  height: 450,
  x: function(d){return d.label;},
  y: function(d){return d.value;},
  showValues: false,
  transitionDuration: 500,
  xAxis: {
    axisLabel: 'Month'
  },
  yAxis: {
            axisLabel: 'Views',
            axisLabelDistance: 10,
            tickFormat: function (d) {
                    return d3.format('k')(d);
            }
        },
  color: ['#59ade8'],
  dispatch: {
              tooltipShow: function(e){ },
              tooltipHide: function(e){},
              beforeUpdate: function(e){}
            },
            discretebar: {
              dispatch: {
                //chartClick: function(e) {console.log("! chart Click !")},
                elementClick: function(e) {   
                    selected_element = e;
                    setVisibility();
                 },
                elementMouseout: function(e) {},
                elementMouseover: function(e) {
                    d3.select(e).color = '#222'
                }
              }
            }
  }
  }

  $scope.data = [{
  values: [{
    "label" : "10" ,
    "value" : 50
  },{
    "label" : "11" ,
    "value" : 20
  },{
    "label" : "13" ,
    "value" : 60
  },{
    "label" : "14" ,
    "value" : 90
  },{
    "label" : "15" ,
    "value" : 40
  },{
    "label" : "16" ,
    "value" : 50
  },{
    "label" : "17" ,
    "value" : 30
  }]
}];

person Buddhika Herath    schedule 11.09.2016    source источник
comment
Я никогда не использовал angular, но чистый код D3 таков: d3.select(this).style('fill', 'red').   -  person Gerardo Furtado    schedule 11.09.2016
comment
Спасибо за ваш ответ. Но выдает ошибку: d3.min.js:1: Uncaught TypeError: невозможно прочитать свойство setProperty неопределенного   -  person Buddhika Herath    schedule 11.09.2016


Ответы (1)


Я решил проблему, используя функцию $scope.apply(). Это сделало мой день. Я меняю цвет каждой полосы на

$scope.$apply(function(){
  $scope.data[0].values[e.index].color = '#59ade8';
});
person Buddhika Herath    schedule 11.09.2016