用nodejs表示正确渲染js对象

时间:2014-03-22 22:08:51

标签: javascript json node.js express

我有一些我想要渲染到JADE页面的结构,所以我决定制作类似JSON的对象来渲染某种数据(变量,文本,js对象),这个JSON对象看起来像:

var dataSet1 = {
    meta: {
        "name": "Some text",
        "minimum": mini_2,
        "maximum": maxi_2,
        "currentValue": last_data_2
    },
    data: {
        "values": dataTwo,
        "corridor": {
            "x1": xc,
            "x2": yc2,
            "yw": yw2
        }
    }
};

我的渲染线:

res.render('index', {
    data_to_draw: JSON.stringify(dataSet1)
});

然后我在我的JADE上使用这个渲染数据:

        displayGraphExampleOne("#graph",
                            !{data_to_draw.data.values},
                            !{data_to_draw.meta.currentValue},
                            !{data_to_draw.meta.minimum},
                            !{data_to_draw.meta.maximum},
                            !{data_to_draw.meta.name},
                            !{data_to_draw.data.corridor.x1},
                            !{data_to_draw.data.corridor.x2},
                            !{data_to_draw.data.corridor.yw2});

无法读取属性'值'未定义 我得到这种类型的错误。 我是JS的新手,所以我试图决定我做错了什么。如果我将传递不在js对象中的数据 - 它运行良好,但我需要这种类型的传递数据。 感谢名单

2 个答案:

答案 0 :(得分:0)

不要JSON.stringify对象,而是传递对象本身,否则你试图访问字符串的属性,这显然不存在。

答案 1 :(得分:0)

只需格式化代码:

var dataSet1= [

    {
        "meta": {
            "name": "Veocity variance",
            "minimum": mini_1,
            "maximum": maxi_1,
            "currentValue": last_data_1
        },

        "data": {
            "values": dataOne,
            "corridor": {
                "x1": xc,
                "x2": yc1,
                "yw": yw1
            }
        }
    }
];

并使用此类电话:

displayGraphExampleOne("#graph",
        !{first_set}[0][0].data.values,
        !{first_set}[0][0].meta.currentValue,
        !{first_set}[0][0].meta.minimum,
        !{first_set}[0][0].meta.maximum,
        !{first_set}[0][0].meta.name,
        !{first_set}[0][0].data.corridor.x1,
        !{first_set}[0][0].data.corridor.x2,
        !{first_set}[0][0].data.corridor.yw);

但不要忘记渲染:

res.render('index', {

    first_set:  JSON.stringify([dataSet1, dataSet2, dataSet3]),
    second_set: JSON.stringify([dataSet1, dataSet2, dataSet3]),
    third_set:  JSON.stringify([dataSet1, dataSet2, dataSet3])

                    });