Javascript PyBossa加载和呈现任务
(这是我关于Stackoverflow的第一个问题,所以我希望我做得对。) 我正在尝试使用PyBOSSA框架在上设置一个项目。 我跟随他们进行项目开发。 第一部分对我来说似乎非常清楚,创建项目和添加任务都很有效。 然后我构建了自己的html网页,将任务呈现给用户。现在,下一步是从项目中加载任务,将它们呈现给用户,并保存他们的答案。 不幸的是,我不知道该怎么做。 我将尝试提出一些问题,让您了解我的问题:Javascript PyBossa加载和呈现任务,javascript,crowdsourcing,Javascript,Crowdsourcing,(这是我关于Stackoverflow的第一个问题,所以我希望我做得对。) 我正在尝试使用PyBOSSA框架在上设置一个项目。 我跟随他们进行项目开发。 第一部分对我来说似乎非常清楚,创建项目和添加任务都很有效。 然后我构建了自己的html网页,将任务呈现给用户。现在,下一步是从项目中加载任务,将它们呈现给用户,并保存他们的答案。 不幸的是,我不知道该怎么做。 我将尝试提出一些问题,让您了解我的问题: 我怎么能试试这个?唯一的方法似乎是更新代码,然后运行pbs update_项目 在哪里可以找到
pybossa.taskload(function(task,deferred){})代码>和pybossa.presentTask(函数(任务,延迟){})代码>。但我不知道它们是如何工作的,还有其他什么。这看起来像是包含一个文档,但它没有(断开的链接或空索引)
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>');
pybossa.taskLoaded(函数(任务,延迟){
如果(!$.isEmptyObject(任务)){
解决(任务);
}
否则{
解决(任务);
}
});
pybossa.presentTask(函数(任务,延迟){
如果(!$.isEmptyObject(任务)){
//在html中选择要加载数据的容器(取决于布局和创建任务的方式)
$(“#someID”).html(task.info.someName);
//单击“下一步按钮”保存答案并加载下一个任务
$(“#下一步按钮”)。单击(函数(){
//将答案保存到变量中
var answer=$(“#someOtherID”).val();
如果(答案类型!=“未定义”){
saveTask(task.id,answer).done(function()){
延迟。解决();
});
}
});
}
否则{
$(“#someID”).html(“没有更多的任务要完成。感谢参与…”);
}
});
pybossa.run(“”);
我将尝试逐一回答您的观点:
pbs更新项目
或转到项目页面>
任务>任务演示者,并在此处编辑代码pybossa.taskLoaded(函数(任务,
延期){};presentTask(函数(任务,延迟){})代码>
在第一篇文章中,你必须写下你想要发生的事情
加载任务后,但在准备演示任务之前
给用户(例如,加载与任务相关的附加数据,
而不是任务本身,比如来自外部站点的图像)。一旦
完成此操作后,您必须调用deferred.resolve()
,这就是方法
告诉pybossa.js我们已经完成了任务
(如果成功或发生了错误)
之后,您必须为第二个回调编写回调
(pybossa.presentTask)为任务设置所有内容,
与按钮应答提交的事件处理程序类似,下面是
您应该将完成任务的用户的逻辑放在哪里
它本身,然后在哪里调用pybossa.saveTask()
。再一次,
最后应该调用deferred.resolve()告诉pybossa.js
用户已完成此任务并显示下一个任务。我
会建议你在里面做回叫吗
pybossa.saveTask(task).done(callbackFunc())
,因此请确保
正确完成当前任务后,继续执行下一个任务
拯救
你也可以试试看。这仅用于让开发人员环境在本地测试/调试您的代码。非常感谢您的澄清。我将用更多的代码片段更新我的答案,以帮助其他有同样问题的人。我知道你提供的链接,但问题是JS函数太复杂了,很难找到什么是关键。他们用的大部分东西我都不需要。这就是你的解释对我帮助很大的地方。