【发布时间】:2016-11-08 10:39:44
【问题描述】:
这是我的问题。我有以下功能
def index():
rows=db(db.mylist).select()
return dict(rows=rows)
所以每当我重新加载前视图索引时,我都想从数据库中检索行并将数据以列表的形式显示给用户
{{for(r in rows)}}
li.innerhtml={{=rows.task}}
{{pass}}
显然,这不是正确的做法。我想我必须使用 json 和 XML。
这是我正在使用的表
db.define_table(
'mylist',
Field('task', 'string')
)
<div class="col-sm-6">
<div class="panel panel-default">
<div class="panel-heading center " style="color: black; font-style: inherit">
<form>
Task:
<input name="name" id="task" />
<button type="button" class="btn btn-success btn-sm" onclick=add(),ajax('{{=URL('default','insert_task')}}',['name']) >add</button>
</form>
</div>
<div class="panel-body center">
<ul id="list" class="list-group"> </ul>
</div>
</div>
</div>
</div>
var ul = document.getElementById("list");
var lastId=0;
function add()
{
if(!isBlank(document.getElementById("task").value)) {
var iCon = document.createElement('div'); //create a div container
var dbtMenu=document.createElement('div');
var li = document.createElement("il"); //create a list-element
var closeSpan = document.createElement("span"); //create a span for badge attribute
var ClickListState=0;
dbtMenu.setAttribute("class","container");
//dbtMenu.appendChild(dropDownList);
li.setAttribute('id',lastId); // set an attribute for id
iCon.className = "glyphicon glyphicon-remove"; // image for remove button
closeSpan.setAttribute("class", "badge"); //create a new attribute for span
closeSpan.appendChild(iCon); // put it in the span set
iCon.addEventListener("click",function(){var element=document.getElementById(li.getAttribute('id'));
element.parentNode.removeChild(element);}); //functionlity
li.innerHTML = document.getElementById('task').value;
var value=document.getElementById('task').value;
var pass= document.getElementById('task').value;
li.setAttribute("class", "list-group-item hover-yellow");
li.addEventListener('click',function() {if(ClickListState==0){li.style.backgroundColor="red"; ClickListState++;}
else {li.style.backgroundColor="white"; ClickListState--; }});
li.appendChild(closeSpan);
lastId++;
ul.appendChild(li);
}
}
function update()
{
{{for r in rows:}}
var iCon = document.createElement('div'); //create a div container
var dbtMenu = document.createElement('div');
var li = document.createElement("il"); //create a list-element
var closeSpan = document.createElement("span"); //create a span for badge attribute
var ClickListState = 0;
dbtMenu.setAttribute("class", "container");
//dbtMenu.appendChild(dropDownList);
li.setAttribute('id', lastId); // set an attribute for id
iCon.className = "glyphicon glyphicon-remove"; // image for remove button
closeSpan.setAttribute("class", "badge"); //create a new attribute for span
closeSpan.appendChild(iCon); // put it in the span set
iCon.addEventListener("click", function () {
var element = document.getElementById(li.getAttribute('id'));
element.parentNode.removeChild(element);
});
// var t ={#{=XML(response.json(r.task))}}
li.innerHTML = "t";
var value = document.getElementById('task').value;
var pass = document.getElementById('task').value;
li.setAttribute("class", "list-group-item hover-yellow");
li.addEventListener('click', function () {
if (ClickListState == 0) {
li.style.backgroundColor = "red";
ClickListState++;
}
else {
li.style.backgroundColor = "white";
ClickListState--;
}
});
li.appendChild(closeSpan);
lastId++;
ul.appendChild(li);
{{pass}}
}
update();
【问题讨论】:
-
我建议在继续使用您的应用程序之前阅读 web2p 文档。
-
您好安东尼,感谢您的回复。我正在阅读文档并编写应用程序,但我只是没有很好的记忆力来保留所有信息。我可以保留 web2py 的工作流程,但我仍然在代码中伪造了一些技术方面。您在我之前的帖子中的回复非常有用。它解决了我的问题
-
我仍然需要帮助。我们如何在 javascript 中使用行?
-
@Anthony 我实际上需要从表中获取元素“任务”并将其放入 li.innerhtml 中的 javascript –
-
我认为您误解了模板的工作原理。所有 Python 代码(即在
{{...}}分隔符内)在页面被传递到浏览器之前在服务器上执行。因此,您的 Python 代码无法与 Javascript 代码交互(在 web2py 处理完整个页面后在浏览器中执行)。换句话说,你不能有一个 Python 循环在循环中运行一些 Javascript 代码。您需要更详细地解释您要达到的目标。
标签: javascript python json xml web2py