Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何基于非';t直接1对1映射_Javascript - Fatal编程技术网

Javascript 如何基于非';t直接1对1映射

Javascript 如何基于非';t直接1对1映射,javascript,Javascript,我正在构建另一个预订web应用程序,我遇到了一个我有限的javascript知识无法用简单的方式解决的问题 我有两个函数返回相关数据。对于所选日期,一个函数返回打开和关闭时间。第二个函数返回关于先前在当天预订的单个事件的元数据 基于上述两个函数,我希望在表中呈现一个时间选择器,以便以小时分隔,其中每个小时显示为已预订(使用上述函数中的一些元数据)或可用,并且可以单击以预订时间 我看过knockout.js,但感觉不太合适,因为模型没有如此直接地映射到视图,我想基于该数据呈现一个可单击的表行 我的

我正在构建另一个预订web应用程序,我遇到了一个我有限的javascript知识无法用简单的方式解决的问题

我有两个函数返回相关数据。对于所选日期,一个函数返回打开和关闭时间。第二个函数返回关于先前在当天预订的单个事件的元数据

基于上述两个函数,我希望在表中呈现一个时间选择器,以便以小时分隔,其中每个小时显示为已预订(使用上述函数中的一些元数据)或可用,并且可以单击以预订时间

我看过knockout.js,但感觉不太合适,因为模型没有如此直接地映射到视图,我想基于该数据呈现一个可单击的表行

我的问题是,基于可通过ajax调用访问的元数据动态生成此类表的标准方法是什么?如何实现这一点?

没有“标准”方法,这完全取决于您想要使用的库和方法

就我个人而言,我会尝试将这两个函数合并成一个AJAX调用(这样就不必处理返回两个调用的同步性问题)

对于纯JavaScript解决方案,我会在AJAX调用返回时添加表,然后循环每小时的时间,并基于AJAX数据生成行

// setup ajax request.....
ajax.onreadystatechange = function() {
    if (ajax.readyState === 4 && ajax.status === 200) {
        var timeTable = document.createElement('div');

        for (var i = openTime; i < closingTime; i++) {
            var row = document.createElement('div');
            if (
                // check to see if this hour has a booking
            ) {
                // generate a 'booked' row
            } else {
                // generate a 'free' row
            }
            timeTable.appendChild(row);
        }

        // place table in the correct place in the document
    }
}
//设置ajax请求。。。。。
ajax.onreadystatechange=函数(){
if(ajax.readyState==4&&ajax.status==200){
var时间表=document.createElement('div');
for(var i=openTime;i
如果希望在用户选择不同的日期时动态更改表,则只需清空旧的div


考虑到这不是真正的列表数据,我会避开使用表标签。

您应该:显示示例输入,显示预期输出的示例,并考虑到迄今为止您所尝试的内容。