对话框'动态内容只显示一次后,第一个按钮点击
dialog'dynamic content shows only once after first button click
我试图显示一个列表到一个对话框后,一个按钮单击,列表的内容是从服务器检索,我的列表显示当我第一次单击按钮,但随后的对话框显示为空。
onclick的代码正在工作,每次单击按钮时都运行adelement。
<ons-button modifier = "small" style="margin-left: 25%;"
onclick="menu.setMainPage('default.html',{closeMenu: true});
ons.createDialog('dialog.html').then(function(dialog) {dialog.show({callback : function(){addPresentation();}});});
console.log('log');
"
>
new presentation
</ons-button>
<ons-template id="dialog.html">
<ons-dialog var = "dialog" id = "dialog" cancelable>
<ons-scroller style="height: 200px; width: 100%">
<div class="dialog-content" id="diagcontent" >
</div>
</ons-scroller>
</ons-dialog>
</ons-template>
我甚至试过这样做:
<ons-button modifier = "small" style="margin-left: 25%;"
onclick="addElement();
ons.createDialog('dialog.html').then(function(dialog) {dialog.show();});
"
>
再次给出相同的结果。
Js方法:
function addPresentation(){
if (window.XMLHttpRequest){
var xmlHTTP = new XMLHttpRequest();
xmlHTTP.open("GET", addpresentation, true);
xmlHTTP.send();
xmlHTTP.onreadystatechange = function() {
var script = document.createElement('script');
script.innerHTML = "ons.compile(document.getElementById('dialog')); console.log('script);";
document.getElementById('dialog').appendChild(script);
if (xmlHTTP.readyState == 4 && xmlHTTP.status == 200)
{//document.getElementById("diagcontent").innerHTML = "";
var list = document.createElement('ons-list');
var json = JSON.parse(xmlHTTP.responseText);
console.log("addPresentation : " + json);
for (var i=0;i<json.length;i++){
var btn = document.createElement('ons-button');
btn.setAttribute('modifier',"quiet");
btn.innerHTML = json[i].name;
var id = json[i].id_presentation
var name = json[i].name;
btn.setAttribute('onclick',"addElement('""+id+"'",'""+name+"'");dialog.hide();");
var listitem = document.createElement('ons-list-item');
listitem.appendChild(btn);
list.appendChild(listitem);
}
document.getElementById("diagcontent").appendChild(list);
}
}
}
}
ons.createDialog
方法将创建一个对话框并将其附加到DOM。当你隐藏它时,它不会被破坏,你还需要调用dialog.destroy()
。
document.getElementById('diagcontent')
将只返回ID为diagcontent
的第一个项目,这就是为什么它只在第一次工作。
我认为你应该创建一次对话框,当按钮被点击时只使用dialog.show()
方法。
你可以在每次点击按钮时创建它,但在这种情况下,你必须确保两个对话框不能同时出现在DOM中,因为你使用的是带有ID属性的元素,而ID应该是唯一的。
相关文章:
- 使用 JavaScript 一次为一个元素设置多个属性
- 一次显示一个隐藏指令-AngularJS
- 一次显示一个指令AngularJS
- 复选框一次选中一个不在gridview中工作
- 复选框一次选中一个不起作用
- 什么'是从对象列表中一次编辑一个对象的正确Angular/Firebase方法
- Slding表单不会一次显示一个表单
- 重置功能,因此一次只有一个打开
- 如何一次获取一个p元素的内容
- jqueryhttp将数据发布到整个数组,一次发送一个
- 在angularjs中一次选择一个项目
- 希望文本一次附加一个字母(或按块)d3
- 一次滑动一个表行
- 我试图用jQuery让每个HTML5元素一次淡出一个
- HTML画布-使动画一次发生一个,而不是同时发生多个
- 一次显示一个标记-谷歌地图API v3
- 为jquery设置动画,一次设置一个对象
- 停止 JavaScript 函数排队,一次允许一个函数
- 如何循环函数数组并在单击时一次执行一个
- 如何保持一次显示一个悬停