2016-12-15 3 views
0

У меня есть c3.js библиотека, которая рисует диаграмму внутри моего файла angular2. Сценарий рисунок внутри функции:Доступ к переменной внутри функции :: TypeScript & Angular2

private draw() { 

let chart = c3.generate({ 
    bindto: '#chart', 
    data: { 
    columns: [ 
     ['data1', 30, 200, 100, 400, 150, 250, 130, 50, 20, 10, 40, 15, 25, 390], 
     ['data2', 50, 20, 10, 40, 15, 25, 542, 30, 200, 100, 333, 150, 250] 
    ], 
    type: "line" 
    } 

}); 

}

c3.js библиотека предоставляет возможность изменить тип диаграммы от line к spline, с помощью следующей функции:

chart.transform('spline');

Но, к сожалению, у меня нет доступа к этой переменной chart, так как ее внутри draw() функция.

Я хочу поместить эту функцию chart.transform('spline'); внутри кнопки, чтобы позволить пользователю изменять ее динамически.

~ Мне нужен какой-то способ заставить его работать, любая помощь высоко оценена!

+0

Вы можете добавить таблицу в качестве поля на классе вы используете Это. – Dinistro

+0

Вы должны использовать сервис, чтобы сделать это, ваша функция должна быть методом компонента, и вам нужно получить переменную через getter на вашем сервисе. – Sakuto

+0

@Sakuto Если бы вы были так мудры, чтобы ответить на какой-нибудь пример, пожалуйста? –

ответ

0
chart:any; 

private draw() { 

this.chart = c3.generate({ 
    bindto: '#chart', 
    data: { 
    columns: [ 
     ['data1', 30, 200, 100, 400, 150, 250, 130, 50, 20, 10, 40, 15, 25, 390], 
     ['data2', 50, 20, 10, 40, 15, 25, 542, 30, 200, 100, 333, 150, 250] 
    ], 
    type: "line" 
    } 

}); 

вы можете использовать this.chart везде

+0

Уже пробовал это. Получена ошибка: 'ORIGINAL EXCEPTION: Невозможно прочитать свойство 'transform' of undefined' –

0

попробовать инициализировать график:

chart: any = {}; 

затем вызвать его

this.chart.transform('spline'); 
Смежные вопросы