如何通过javascript函数在jade模板中使用服务器数据

how to use server data in jade templating running through javascript function?

本文关键字:服务器 数据 javascript 何通过 函数 jade      更新时间:2023-09-26

我正试图将服务器数据拉入Jade,然后使用数据运行一个函数,以确定自动选择哪个类。这在表格中用于根据单元格的值自动为单元格着色。

函数运行返回的数据通过(日期差异):

function inDays(date1,date2) {
    var date1=date1.split('/');
    var date2=date2.split('/');
    var d1=new Date(date1[1]+'/'+date1[0]+'/'+date1[2]);
    console.log(d1);
    var d2=new Date(date2[1]+'/'+date2[0]+'/'+date2[2]);
    console.log(d2);
    var t2=d2.getTime();
    var t1=d1.getTime();
    var days=parseInt((t2-t1)/(24*3600*1000));
    return days
}

所需用途:

td(class!='<%- #{inDays(<%= dateCompareAgainst %>, <%= date %>)} < 5 ? "green" : "orange"') <%= date %>

然而,这并不奏效。

当我放入以下内容时:

td(class='#{inDays(<%= dateCompareAgainst %>, <%= date %>)}') <%= date %>

它按预期显示了课堂上的两个日期。我不知道如何正确地做这件事,任何帮助都将不胜感激。

我已经设法通过将它放在JS文件中来解决这个问题。我觉得它有点古怪,但它很管用。我使用主干网,利用主干网的模板和渲染功能。我为每个单元格类型添加了类,以便可以使用以下内容。

这就是我如何根据两个单元格的日期差异自动更改颜色:

render: function() {
    return this.$el.html(this.template(this.model.attributes)),
    this.$el.find(".initialsent").each(function(a, b) {
        if (b.innerText) {
            var c = b.innerText,
            d = app.formatDate(c),
            e = $(this).closest("tr").children("td.opened").text(),
            f = app.formatDate(e);
            $(this).closest("tr").children("td.initialsent").addClass(app.inDays(f, d) < 3 ? "green" : app.inDays(f, d) < 5 ? "orange" : "red")
        }
        else {
            var g = new Date,
            e = $(this).closest("tr").children("td.opened").text(),
            f = app.formatDate(e);
            $(this).closest("tr").children("td.initialsent").addClass(app.inDays(f, g) < 3 ? "green" : app.inDays(f, g) < 5 ? "orange" : "red")
        }
    }),
    this
}