Architettura direttiva AngularJS: dove inserire i parametri?

1

Sto utilizzando un plug-in per grafici (Morris.js) nella mia applicazione AngularJS. Sto costruendo una direttiva per ogni tipo di grafico.

Il plugin è chiamato così:

new Morris.Line({
  // ID of the element in which to draw the chart.
  element: 'myfirstchart',
  // Chart data records -- each entry in this array corresponds to a point on
  // the chart.
  data: [
    { year: '2008', value: 20 },
    { year: '2009', value: 10 },
    { year: '2010', value: 5 },
    { year: '2011', value: 5 },
    { year: '2012', value: 20 }
  ],
  // The name of the data record attribute that contains x-values.
  xkey: 'year',
  // A list of names of data record attributes that contain y-values.
  ykeys: ['value'],
  // Labels for the ykeys -- will be displayed when you hover over the
  // chart.
  labels: ['Value']
});

Il primo passo è solo includere questo codice nella mia funzione link :

angular.module('app')
  .directive('donutchart', function () {
    return {
      link: function (scope, element, attrs) {
        new Morris.Bar({
         element: element[0].id,
         data: [
          { Age: '20', value: 20 },
          { Age: '25', value: 10 },
          { Age: '30', value: 5 },
          { Age: '40', value: 5 },
          { Age: '50', value: 20 }
        ],
        xkey: 'Age',
        ykeys: ['Amount'],
        labels: ['views']
      });
    }
  };
});

Ma non mi piace che manipoli la direttiva quando voglio cambiare i dati. Quindi salvi tutti gli attributi all'interno dell'ambito all'interno del controller.

Ma è questo il modo "giusto" per farlo? O dovrei usare una variabile di configurazione per memorizzare un attributo molto? Come:

var CONFIG = { bar_labels: ['views'] }

e quindi all'interno del controller:

$scope.bar_labels = bar_labels
    
posta Bastian Gruber 15.07.2014 - 16:13
fonte

0 risposte

Leggi altre domande sui tag