gpt4 book ai didi

javascript - Meteor:通过 Chart-Div 重用模板

转载 作者:行者123 更新时间:2023-12-03 10:35:21 28 4
gpt4 key购买 nike

我使用的是单个模板 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 中的每个对象使用相同的模板堵塞。问题是渲染的回调捕获第一个对象的数据,并且将上下文切换到另一个对象实际上不会重新加载或刷新页面。

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

单击 <a> 后重新渲染/重新加载显示模板的简单、优雅的方法是什么?侧边栏中的标签?

更新:感谢@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);
});
}

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

关于javascript - Meteor:通过 Chart-Div 重用模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014494/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com