我试图通过使用PyBOSSA框架在CrowdCrafting.org上建立一个项目.@H_502_3@我跟着tutorial进行了项目开发.@H_502_3@第一部分对我来说非常清楚,创建项目并添加任务工作正常.@H_502_3@然后我构建了自己的html网页,向用户展示任务.现在,下一步是从项目中加载任务,将它们呈现给用户,并保存他们的答案.@H_502_3@不幸的是,我不明白该怎么做.@H_502_3@我会尝试制定一些问题,让你了解我的问题:
>我怎么试试呢?唯一的方法似乎是更新代码然后运行pbs update_project@H_502_3@>我在哪里可以找到PyBossa.js的文档?我刚看到(在教程和其他页面中)有一些函数,如pybossa.taskLoaded(function(task,deferred){});和pybossa.presentTask(function(task,deferred){});.但我不知道它们是如何工作的以及还有什么.这个page看起来会包含一个文档,但它没有(断开链接或空索引).@H_502_3@>我如何使用该库?我想a)加载任务,b)将其呈现给用户,c)向用户显示他的进度,以及d)发送答案.所以我想我必须调用4种不同的功能.但我不知道怎么做.
我期待着您的任何信息.
编辑:4.看看示例项目的代码,我不明白这个关于加载disqus的东西是什么.我认为disqus是一个论坛软件,但我不确定,我不知道这与我的项目(或他们的)有什么关系.
编辑:@H_502_3@据我所知,JS库的基本部分是:
pybossa.taskLoaded(function(task,deferred) { if ( !$.isEmptyObject(task) ) { deferred.resolve(task); } else { deferred.resolve(task); } }); pybossa.presentTask(function(task,deferred) { if ( !$.isEmptyObject(task) ) { // choose a container within your html to load the data into (depends on your layout and on the way you created the tasks) $("#someID").html(task.info.someName); // by clickin "next_button" save answer and load next task $("#next_button").click( function () { // save answer into variable here var answer = $("#someOtherID").val(); if (typeof answer != 'undefined') { pybossa.saveTask(task.id,answer).done(function() { deferred.resolve(); }); } }); } else { $("#someID").html("There are no more tasks to complete. Thanks for participating in ... "); } }); pybossa.run('<short name>');
解决方法
>您可以运行pbs更新项目或转到项目页面>@H_502_3@任务>任务演示者并在那里编辑代码.@H_502_3@>我相信this链接工作,你应该找到@H_502_3@你想要的信息.@H_502_3@>所以,一旦你创建了项目并添加了任务和@H_502_3@演示者(您构建的HTML)应该包含Javascript@H_502_3@演示者本身内部的代码.你实际上只需要写@H_502_3@这两个函数:pybossa.taskLoaded(function(task,task)@H_502_3@延迟){});和pybossa.presentTask(function(task,deferred){});
在第一个内容中,你必须写下你想要发生的事情@H_502_3@一旦任务已加载但在您准备好呈现之前@H_502_3@给用户(例如加载与任务相关的附加数据,@H_502_3@除了任务本身,就像来自外部网站的图像).一旦@H_502_3@这样做,你必须调用deferred.resolve(),这就是方法@H_502_3@告诉pybossa.js我们完成了任务的负载@H_502_3@(如果它已经成功或发生了一些错误).
之后,您必须为第二个编写回调(pybossa.presentTask)你为你的任务设置了一切,就像按钮答案提交的事件处理程序一样,这里是你应该把用户的逻辑放在哪里完成任务本身,然后你应该在哪里调用pybossa.saveTask().再次,你应该在最后调用deferred.resolve()来告诉pybossa.js用户完成此任务并显示下一个任务.一世会建议你在回调内做pybossa.saveTask(task).done(callbackFunc()),所以你确定你一旦当前的任务正确进行,继续下一个任务保存.>你可以忘记讨论代码.这些只是模板提供,其中包含一些允许人们的代码评论任务.为此,使用了Disquss,但它取决于您是否要使用它,因此您可以安全地删除它码.