我想用简单的nvd3 discrete bar chart显示集合中的数据。

当我尝试使用本地收藏集时,效果很好。
现在我将相同的数据移至db集合,但无法在Meteor的.rendered中获取数据。

Template.chartPopularWordsAll.onCreated(() => {
    let template = Template.instance();
    template.autorun(() => {
        template.subscribe('dataViewed'); // DataViewed.find()
});

Template.chartPopularWordsAll.rendered = function() {
    let data = DataViewed.find({}, {
        limit: 5,
        sort: {
            timesViewed: -1
        }
    }).fetch();

    console.log(data); // <-- this returns an empty array
}


问题:如何访问.rendered内部的数据?

在流星文档中搜索“ .rendered”没有结果,我只能找到.onRendered。 .rendered是最新的还是过时的?

提前致谢!

莫夫

最佳答案

我认为这里的问题是,混合自动运行以进行订阅和获取:

数据更改时会运行自动运行,因此不是需要在自动运行内进行的预订,而是数据查找。

尝试这个:

Template.chartPopularWordsAll.onCreated(() => {
    let template = Template.instance();
    template.subscribe('dataViewed'); // DataViewed.find()
});

Template.chartPopularWordsAll.rendered = function() {
  template.autorun(() => {
    let data = DataViewed.find({}, {
        limit: 5,
        sort: {
            timesViewed: -1
        }
    }).fetch();

    console.log(data); //
  }
}


如果那不起作用,请尝试不要获取对数据的调用,而是在需要数据时获取:Collection.find()为您提供了一个游标,它是反应性的,但是一旦获取,您就会得到一个数组,即没有反应。 Collection.find()部分“应该”在自动运行内具有反应性,但我不确定100%。

关于javascript - 如何在Meteor中为nvd3访问Template.rendered中的订阅,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36580238/

10-12 06:31