Meteor:重复使用带有图表的模板-Div

Meteor: Reusing a Template With a Chart-Div

我正在使用一个模板 show,它实际上没有任何动态元素(还):

<template name="show">
  <div class="row">
    <div id="container-pie"></div>  
  </div>
</template>

我有一个侧边栏,它从我的数据库中提取并创建 <a> 个标签。

我呈现的回调具有绘制饼图的代码:

Template.show.rendered = function() {

  var datum = this.data.visitors; 

  var keys = Object.keys(datum); 

  newAndReturningPie(keys[0], keys[1], datum.new, datum.returning);  
}

(此数据是从 iron:router 中获取的)。

现在这是我需要帮助的地方(请注意边栏模板以供参考:)

<template name="sidebar">
  <div class="ui left demo vertical inverted labeled sidebar menu">
    <a class="item" href="{{pathFor 'root'}}">
      <i class="home icon"></i>Home
    </a>
    {{#if anyProperties}}
    {{#each this}}
    <a href="{{pathFor 'property.show'}}" class="item">
      {{name}}
    </a>
    {{/each}}
    {{else}}
    <a class="item">
      <i class="settings icon"></i>No properties
    </a>  
    {{/if}}
  </div> 
</template>

我为 #each 块中的每个对象使用相同的模板。问题是呈现的回调捕获了第一个对象的数据,并且将上下文切换到另一个对象实际上并没有重新加载或刷新页面。

如果我只使用一些 HTML 和 {{objectProperty}},那么我知道它会动态更新。但我没有使用任何空格键标签,只是一个包含图表的 div。

单击边栏中的 <a> 标签后,有什么简单、优雅的显示模板 re-render/reload 的方法?

更新:感谢@tarmes

这是我的工作代码:

Template.show.rendered = function() {

  var self = this;

  controller = Router.current();

  self.autorun(function(){
    var params = controller.getParams();

    Meteor.call('selectedProperty', params._id, function(err, res){
      if (!err) {
        var datum = res.visitors; 
        var keys = Object.keys(datum);     
        newAndReturningPie(keys[0], keys[1], datum.new, datum.returning);  
      }
    });
  });
}

我所做的只是添加一个 Meteor 方法来通过 ID 在数据库中查询对象。

这样的事情怎么样:

Template.show.rendered = function() {

    self = this;
    controller = Router.current();
    self.autorun(function() {
      var params = controller.getParams(); // Reactive
      var datum = self.data.visitors; 
      var keys = Object.keys(datum); 
      newAndReturningPie(keys[0], keys[1], datum.new, datum.returning);  
    });
}

每当控制器的参数发生变化时,自动运行都会重新运行(我假设如果路线中有 _id 等,它们会这样做),从而强制更新。