和Blaze一起玩,我意识到以下几点:
如果我有一个父模板,其中我包含一个{{> child_template }}
然后Blaze将等待渲染父模板之前渲染子模板。在某些情况下这可能会很好,但不是全部。
例如,如果我的父模板包含<h1>Welcome to my page</h1>
,则子项包含10,000个项目的列表。我想要一种方法尽快显示<h1>
并等待10 000个项目稍后出现
我目前正在做的事情是:
Template.parent.onRendered(function(){
Blaze.render(Template.child, document.body);
});
它正在工作,但我想知道是否有人有一个更好的解决方案,似乎很常见的问题。感谢
答案 0 :(得分:1)
默认情况下,您可以将自定义布尔参数传递给子组件false
,但父组件的onRendered将其设置为true。并且子组件应检查此参数,除非它true
,否则不会呈现任何内容。
Template.parent.onCreated(function() {
this.state = new ReactiveDict();
this.state.setDefault({
"canRender": false,
});
}
Template.parent.onRendered(function() {
this.state.set("canRender", true);
}
Template.parent.helpers({
canRender() {
return Template.instance().state.get("canRender");
}
});
将状态传递给子组件:
<template name="parent">
{{>child canRender=canRender}}
</template>
<template name="child">
{{#if canRender}}
<p>Millions of items go here.</p>
{{/if}}
</template>
答案 1 :(得分:0)
正如您所说,您的儿童模板有一个包含10000个项目的列表。所以,这意味着你订阅了一些收藏品。您可以在我们的代码下面解决您的问题。
Traceback (most recent call last):
File "/Users/kdawod/.virtualenvs/python2.7/lib/python2.7/site-packages/scrapy/cmdline.py", line 168, in <module>
execute()
File "/Users/kdawod/.virtualenvs/python2.7/lib/python2.7/site-packages/scrapy/cmdline.py", line 109, in execute
settings = get_project_settings()
File "/Library/Python/2.7/site-packages/scrapy/utils/project.py", line 68, in get_project_settings
settings.setmodule(settings_module_path, priority='project')
File "/Library/Python/2.7/site-packages/scrapy/settings/__init__.py", line 292, in setmodule
module = import_module(module)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named settings