一种google文档,当用户编辑文本时会显示“正在保存...”。或者所有使用ajax并且必须在服务器上保存内容的网站。
我已经了解Meteor通过Method.Call(不是存根)保存在MongoDB(服务器端)上。但是怎么知道所有method.call(写入db)何时结束? (不在客户端(minimongo))
修改
就我而言,在客户端和服务器上定义了3种CRUD操作方法:
我希望用户通过“保存...”消息通知,而此方法在服务器上运行。
从客户端调用方法时可以使用异步回调吗?
答案 0 :(得分:1)
异步回调确实是你想要的。在最简单的情况下:
Session.set("theThingIsLoading", true);
Meteor.call("doTheThing", function (error, result) {
if (error) {/* report it somehow */}
Session.set("theThingIsLoading", false);
});
{{#if theThingIsLoading}}
<p>Loading...</p>
{{/if}}
theThingIsLoading
是Session.get("theThingIsLoading")
的帮助者。
答案 1 :(得分:0)
我建议大气包“auto nprogress”。当处理动作时,它将在屏幕顶部显示一个花哨的加载条。
希望它能满足您的需求!
答案 2 :(得分:0)
我认为如果调用多个方法,user3374348的答案可能会导致奇怪的行为。 我建议:
increaseOngoingMethods=function(){
Session.set("ongoingMethods")=Session.get("ongoingMethods")+1;
}
decreaseOngoingMethods=function(){
Session.set("ongoingMethods")=Session.get("ongoingMethods")-1;
}
increaseOngoingMethods();
Meteor.call("doTheThing", decreaseOngoingMethods);
UI.registerHelper('Methodsareongoing', function() {
return !!Session.get("ongoingMethods")
});
{{#if Methodsareongoing}}
<p>Loading...</p>
{{/if}}
注意:
方法调用中的回调函数没有任何限制。
在增加和减少函数声明之前没有变量 - 这样它们应该全局可用。
由于UI.registerHelper
,所有模板都提供了方法答案 3 :(得分:-1)
John Smith 保存
John Smith是上下文对象的一部分。
如果不是这样 - 请参阅我的其他答案
原始答案:
您是否尝试过使用'isSimulation'属性?
{{#if isSimulation}}
<b>Saving</b>
{{/if}}
如果您的方法在客户端上也可用,它应该可以工作。 如果没有 - 你能不能把你的方法添加到这个帖子
更新: 您更新了帖子 - 简单的CRUD操作应该能够在客户端上运行。 如果您尝试这一点但从未在页面上看到“保存”位,那是因为它如此之快: - / 在好书“探索流星”中,为了说明这种技术,他们实际上使用了一种奇特的延迟方法,因此用户能够看到模型模拟...