2015-07-19 2 views

ответ

1

Вы можете попробовать что-то подобное с underscore.js:

// columnsParam -> columns parameter you passed when created backgrid 
// collection -> collection you passed when created backgrid 

var columns = _.indexBy(columnsParam, 'name'), 
    labels = _.pluck(columnsParam, 'label'), 
    keys = _.pluck(columnsParam, 'name'); 

var csv = labels.join(',') + '\n'; 

csv += collection.map(function(item) { 

    return _.map(keys, function(key) { 
     var cell = columns [key].cell, 
      // suppose you want to preserve custom formatters 
      formatter = cell.prototype && cell.prototype.formatter; 

     return formatter && formatter.fromRaw ? 
      formatter.fromRaw(item.get(key), item) : item.get(key); 
    }).join(','); 

}).join('\n'); 

Это не идеальное (не иметь дело с обычными форматтерами), но демонстрирует идею.

обновление

Чтобы скачать CSV в виде файла, вы можете привязать обработчик вашей кнопки:

var encodedUri = encodeURI('data:text/csv;charset=utf-8,' + csv), 
var link = document.createElement('a'); 
link.setAttribute('href', encodedUri); 
link.setAttribute('download', 'data.csv'); 

link.click(); 
Смежные вопросы