[英]Dynamic jQuery Dialog passing JSON object from within loop
我想知道是否有比当前实现更好的方法(更清洁?)。 我目前正在将PHP SimpleXMLObject
(USPS跟踪API)编码为JSON,并通过Javascript遍历所述JSON对象以操作前端。
下面是我当前的实现示例:
显示在.ready()
外部匿名实现的对话框的函数:
var moreInfo_popup = function(i) {
$('#moreinfo'+i).dialog({
modal:false,
autoOpen:false,
height:555,
title: 'Detailed View',
width:500,
draggable:false,
buttons: {
Ok: function(){
$(this).dialog("close");
}
}
});
$('#moreinfo'+i).dialog('open');
}
显示每个API响应的跟踪ID,最新事件和邮件类的主循环-我当前正在生成附加到#modal_container
的内容div,然后通过<input onClick="">
内联调用moreInfo_popup()
:
for(var key in obj) {
if(obj.hasOwnProperty(key)) {
if(key % 2 === 0) {
$('#page-nav').append("<div id=\"results_table\"><table class=\"data_table\"id=\"data_table_id\"border=\"0\"width=\"60%\"align=\"center\"><tr><td align=center width=20%>"+obj[key].TrackInfo.Attributes.ID+"</td><td align=\"center\"width=\"35%\">"+obj[key].TrackInfo.StatusSummary+"</td><td align=\"center\"width=\"20%\">"+obj[key].TrackInfo.Class+"</td><td align=\"center\"><input type=\"button\"class=\"moreInfo\"value=\"Detail\"id=\"_buttonMoreInfo\"onClick=\"moreInfo_popup("+key+")\"></td></tr></table></div>");
$('#modal_container').append("<div id=\"moreinfo" + key + "\"><table><tr><td>" + obj[key].TrackInfo.Attributes.ID +"</td></tr></table>").hide();
}
else {
$('#page-nav').append("<div id=\"results_table\"><table class=\"data_table_even\" id=\"data_table_id\" border=0 width=60% align=center><tr><td align=center width=20%>"
+ obj[key].TrackInfo.Attributes.ID + "</td><td align=center width=35%>" + obj[key].TrackInfo.StatusSummary + "</td><td align=center width=20%>"
+ obj[key].TrackInfo.Class + "</td><td align=\"center\"><input type=\"button\" value=\"Detail\" class=\"moreInfo\" id=\"_buttonMoreInfo\"onClick=\"moreInfo_popup("+key+")\"></td></tr></table></div>");
$('#modal_container').append("<div id=\"moreinfo" + key + "\"><table><tr><td>" + obj[key].TrackInfo.Attributes.ID +"</td></tr><tr><td> <button>OK</button></td></tr></table>");
}
}
$("#page-nav td:contains('undefined')").html("Invalid");
}
正如您确定的那样,这确实是一种令人难以置信的单调乏味的方法,可以实现预期的结果,当然还有更好的选择。 作为JavaScript / jQuery的新手,我已经在这个主题上进行了大量的搜索,但是并没有真正理解我所发现的东西-如果确实我是在问正确的问题。
我认为您可以使用角度和数据绑定:
因此,您只需使用一条指令,即可将服务器端的JSON对象自动轻松地绑定到html元素。
但是,您应该开始研究角度。
您可以在这里开始寻找做事的优雅方式: https : //docs.angularjs.org/tutorial/step_04
我希望它是有用的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.