2016-02-20 4 views
0

Я хочу реализовать VIS JS Timeline таблицу в моем метеора приложения, я скачал VIS JS и CSS и добавлен в Lib папку, я создал мой шаблонMeteor: Рендер Vis JS Timeline Chart в Метеор App

<template name="vChart"> 
    <div id="visualization"></div> 
</template> 

Ниже я подписавшись данные

Template.vChart.onCreated(function(){ 
     var self = this; 
     self.autorun(function(){ 
     var uMacAdd = FlowRouter.getParam('mc'); 
     self.subscribe('historyinfo', uMacAdd); 
     }); 
    }); 

на Рендер я называю showChart, которая делает мою диаграмму, но проблема в том, когда я извлечения данных из коллекции, она возвращает нуль.

Template.vChart.onRendered(function(){ 
     var historyDump= Collection.find({}).fetch(); 
     console.log("------------------------------------------------"); 
     console.log(historyDump); 
     showChart(); 
    }); 

Сейчас я отображая жестко закодированные данные в графике, но она должна быть динамичной и эти данные я хочу, чтобы извлечь его из моей коллекции.

var showChart = function(){ 
    var container = document.getElementById('visualization'); 

    // Create a DataSet (allows two way data-binding) 
    var items = new vis.DataSet([ 
     {id: 1, className: 'Red',content: 'X', start: new Date(Date.now() - 1000 * 60 * 60 * 24), 
     end: new Date(Date.now() - 1000 * 60 * 60 * 23)}, 
     {id: 2, className: 'green', content: 'Y', start: new Date(Date.now() - 1000 * 60 * 60 * 20), 
     end: new Date(Date.now() - 1000 * 60 * 60 * 19)} 
    ]); 

    // Configuration for the Timeline 
    var options = { 
     //timeAxis: {scale: 'hour'}, 
     zoomMax: 8.64e+7 
    }; 

    // Create a Timeline 
    var timeline = new vis.Timeline(container, items, options); 
} 

Чтобы решить эту проблему я пытался писать помощник для шаблона vChart и назвал его от OnRender, но никакой пользы.

Template.vChart.helpers({ 
    getHistory: function(){ 
     var historyDump= Collection.find({}).fetch(); 
     return historyDump; 
    } 
}); 

Template.vChart.onRendered(function(){ 
    var res = Template.vChart.__helpers['getHistory'](); 
    console.log(res); 
    showChart(); 
}); 

Как достичь этого?

Примечание: Моя подписка и публикация исправно работают, и я могу видеть данные в командной строке. Только Collection.find({}).fetch() написан в помощнике или рендер не работает.

ответ

0

Пробный запрос обратного вызова и он работает :) Нет необходимости в OnRender и нет необходимости в помощнике. Пожалуйста, напишите, если у вас есть лучшее решение, чем это.

Template.vChart.onCreated(function(){ 
    var self = this; 
    self.autorun(function(){ 
     var uMacAdd = FlowRouter.getParam('uMac'); 
     self.subscribe('historyinfo', uMacAdd, { 
      onReady: function() { showChart(); }, 
      onError: function() { console.log('Error'); } 
     }); 
    }); 
});