Javascript Blaze Meteor动态实例化模板和datacontext
我使用类似于观察的功能动态地实例化事件/或数组更改的模板 为了实现这一点,我使用Javascript Blaze Meteor动态实例化模板和datacontext,javascript,meteor,meteor-blaze,Javascript,Meteor,Meteor Blaze,我使用类似于观察的功能动态地实例化事件/或数组更改的模板 为了实现这一点,我使用 //whatever event you want, eg: $(".foo").on("click", function(){ Blaze.renderWithData(Template.widgetCard, d, $(".cards").get(0)); } 这是可行的,但很明显,实例并没有绑定到任何父级的模板 因为我刚刚在div.cards上呈现了这个模板,所以我无法使用template.pare
//whatever event you want, eg:
$(".foo").on("click", function(){
Blaze.renderWithData(Template.widgetCard, d, $(".cards").get(0));
}
这是可行的,但很明显,实例并没有绑定到任何父级的模板
因为我刚刚在div.cards上呈现了这个模板,所以我无法使用template.parentData1来获取父数据上下文,即使这个div.cards包含在模板中
快速修复方法是设置所需的引用,在我的例子中,该引用是全局范围上对象变量父对象的datacontext,或者甚至使用Session,或者直接通过renderWithData的数据传递该上下文
你知道有没有其他的方法,更好的方法,我是说流星奇幻的方法,来达到这个目的?
这是一个好的Blaze.renderWithData用例吗
如果我不清楚或需要更多代码,请告诉我
编辑:
补充上下文信息:
我有一张d3图表,可以选择其中的一些部分。
它具有存储此选定数据部件的数组属性
Chart = function Chart(clickCb, hoverCb, leaveCb, addSelectionCb, removeSelectionCb){
var chart = this;
chart.selectedParts = [];
//... code
}
在Meteor客户端上,从该图表类的外部修改Chart.selectedParts添加/删除
我们的梦想是绑定此阵列图表。选择的部分如下:
在模板上,可以执行以下操作:
<div class="row">
<div class="large-12 columns">
<div class="cards">
{{#each selectedDataChart}}
{{> cardWidget}}
{{/each}}
</div>
</div>
</div>
这样,如果chart.selectedParts是被动的,Blaze可以自动创建或删除cardWidget模板实例,因为绑定
我试着在它上面使用manuel:reactivearray包,这有点奇怪,因为我正在用下划线对这个数组进行复杂的操作,这显然不适用于任何本机数组类型,比如reactivearray。
不起作用,但我不知道它是否应该起作用
你觉得怎么样
这个时候,我想我做的事情有点脏;我只是在添加/删除的图表元素上实例化/销毁Blaze视图。选择的部分为:Blaze.renderWithDataTemplate.widgetCard,{data:d,chart:this},$.cards.get0 这里是我如何做到这一点的 实际上,我不认为使用Blaze.renderWithData是一个好的解决方案 我发现最好的方法是在反应模式下传递数据,能够使用所有模板功能,并继续使用空格键实例化模板。类似于父数据上下文链接 拥有反应式数据源的最简单方法是始终将您的数据与您的Mongo相匹配,因此我不必声明一个自定义的反应式数据源,这可能会使复杂js数据结构中的复杂数据变得棘手 如果有人有同样的问题,我很确定这是因为你没有按照我的情况去做 始终将DB更新为反应式数据源的一个缺点是,您正在进行大量的UI状态更改,而且毕竟要保存更改。在这种情况下,总是经过DB是非常无用的,但这远不是最快的解决方案
问我你是否有类似的问题理解哲学/方法,我开始理解我在做什么了 这里是我如何做到这一点的 实际上,我不认为使用Blaze.renderWithData是一个好的解决方案 我发现最好的方法是在反应模式下传递数据,能够使用所有模板功能,并继续使用空格键实例化模板。类似于父数据上下文链接 拥有反应式数据源的最简单方法是始终将您的数据与您的Mongo相匹配,因此我不必声明一个自定义的反应式数据源,这可能会使复杂js数据结构中的复杂数据变得棘手 如果有人有同样的问题,我很确定这是因为你没有按照我的情况去做 始终将DB更新为反应式数据源的一个缺点是,您正在进行大量的UI状态更改,而且毕竟要保存更改。在这种情况下,总是经过DB是非常无用的,但这远不是最快的解决方案
问我你是否有类似的问题理解哲学/方法,我开始理解我在做什么了 我觉得需要更多的代码。在我看来,我觉得在这种情况下,你需要一个反应式var触发onClick来加载widgetCard模板……是的,我很确定反应式var应该是一个好方法,但事情稍微复杂一点。我将编辑问题的更多细节,以向您展示。我觉得需要更多的代码。在我看来,我觉得在这种情况下,你需要一个反应式var触发onClick来加载widgetCard模板……是的,我很确定反应式var应该是一个好方法,但事情稍微复杂一点。我将对问题进行更详细的编辑以向您展示。
<div class="row">
<div class="large-12 columns">
<div class="cards">
{{#each selectedDataChart}}
{{> cardWidget}}
{{/each}}
</div>
</div>
</div>