Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 彼此都是放置加载图像的好地方吗?_Javascript_Meteor - Fatal编程技术网

Javascript 彼此都是放置加载图像的好地方吗?

Javascript 彼此都是放置加载图像的好地方吗?,javascript,meteor,Javascript,Meteor,我意外地在中找到了关于的else,它似乎做得很好(至少在我的本地主机上)。我想要的是在meteor仍在从数据库检索帖子时显示一个加载程序。它能完成这个任务吗?每个中的其他的注意事项是什么?首先,回答您的问题。。。 是的,它将非常适合你正试图做的事情 Else是一个特殊的块辅助对象 来自一个非官方的车把文档来源,spacebars/blaze/future stuff从中汲取灵感 {{else}。。。可以与任何块辅助对象一起使用,以表示在给定表达式的计算结果为falsy值时应输出的内容 因此,实际

我意外地在
中找到了关于
的else
,它似乎做得很好(至少在我的本地主机上)。我想要的是在meteor仍在从数据库检索
帖子时显示一个加载程序。它能完成这个任务吗?每个
中的
其他
的注意事项是什么?

首先,回答您的问题。。。 是的,它将非常适合你正试图做的事情

Else是一个特殊的块辅助对象 来自一个非官方的车把文档来源,spacebars/blaze/future stuff从中汲取灵感

{{else}
。。。可以与任何块辅助对象一起使用,以表示在给定表达式的计算结果为falsy值时应输出的内容

因此,实际上,选择哪个块帮助器并不重要,无论是否使用
\if
\each
\with
,等等。。。行为本质上是相同的

也就是说,如果您的参数(在本例中为
posts
)的计算结果为a,则随后将对块进行计算

那些警告。。。 实际上并没有任何警告,但关于falsy值的一个棘手问题是空数组实际上是真实的。因此,在您的示例中,如果定义了
posts
,但为空,它仍将计算第一个块,给您留下一个空输出。这对于您来说是理想的,因为您希望在定义加载块之前显示加载块。然而,我可以很容易地看到有人决心做以下事情:

{{#each posts}}
    {{> post}}
{{else}}
    loader.gif
{{\each}}
您的空
posts
数组将计算为
true
,您将永远不会看到缺少posts消息。但是,由于
0
的计算结果为false,因此可以在
#if
帮助程序中包装该块:

{{#each posts}}
    {{content}}
{{else}}
    There are no posts today.
{{/each}}
资料来源:
我认为这不是个好主意

光标
为空时,将显示
{{{each cursor}}}
块辅助对象中的
{{else}
。当光标后面的订阅尚未就绪时,您希望显示加载微调器。至少在两种情况下,情况不同:

一,。光标中实际上没有任何帖子。例如,用户搜索了一些帖子,但没有与搜索匹配的帖子,或者应用程序刚刚上线,根本没有任何帖子。在这种情况下,用户将永远看到加载微调器,并假设您的应用程序已损坏

不过,在
{{else}}
中放一些消息是个好主意,这样用户就不会被空列表搞糊涂了:

{{{#每个帖子}
{{>post}
{{else}
没有帖子。
{{/每个}}
二,。客户端已从服务器接收到一些帖子,但不是全部。您希望在所有帖子到达之前显示微调器,但是使用
{{else}
实现,微调器将在一篇帖子到达后立即消失。当其他帖子到达时,您将看到它们在到达时出现,这可能会引起不安。由于低延迟,您可能不会在开发中看到这种情况,但在生产中,这种情况更可能发生

正确的方法是使用订阅句柄的反应式
ready
方法:

{{#if postsrady}
{{{#每个帖子}
{{>post}
{{else}
没有帖子。
{{/每个}}
{{else}
loader.gif
{{/if}
//在代码中的某个地方,类似这样:
var postsSubscription=Meteor.subscribe(/*…*/);
//顶级:
模板.posts.helpers({
postsReady:function(){return postsSubscription.ready();},
posts:function(){return posts.find();}
});

您也应该考虑使用,它有一个很好的方法来处理等待订阅,使用<代码> WaTime/COD> < < /P>


(如果您以前从未见过Meteor.subscribe
,您可能使用的是不适用于实际应用程序的
autopublish
。请查看上的Meteor文档。)

“它似乎做得很好”。。。“它能做这项工作吗?”我不明白:/从来没有听说过
#each…else
块,但如果它能工作,在
else
部分放置一个加载微调器是一个很好的设计模式,IMHO.-1这个答案对于把手可能是正确的,但在空格键中,当对象为空但真实时,
{else}
仍然会出现(用于列表和光标)。请参阅此meteorpad:
{{#if posts.length}}
    {{#each posts}}
        {{content}}
    {{else}}
        {{>spinner}}
    {{/each}}
{{else}}
    Sorry, there are no posts today.
{{/if}}