将ejs-locals partials与数据JSON一起使用 - TypeError:将循环结构转换为JSON

时间:2014-08-22 00:39:19

标签: node.js sails.js ejs

我试图做一些相当简单的事 - 至少应该是这样。那不计算我和EJS一起工作......

我完全迷失了。调试消息是废话,代码编译,我改变它,它没有,我回滚,它没有。我重新启动它,我刷新,它没有。我想说的是什么?

调试消息显然是错误的。一旦告诉我部分无法找到,但如果我在部分(或刷新,或重新开始,或祈祷)中修复某些东西,它就会找到它。

所以,让我们谈谈我想要做的事情。

我在文件中有一个JSON对象,该文件由控制器加载并发送到视图。

[
    {
        "_href": "/",
        "_controller": "home",
        "_action": "index",
        "_icon": "home",
        "_text": "Home",
        "_classes": ""
    },
    [
        {
            "_href": "/",
            "_controller": "sentences",
            "_action": "index",
            "_icon": "list",
            "_text": "Sentences",
            "_classes": ""
        },
        {
            "_href": "/",
            "_controller": "sentences",
            "_action": "index",
            "_icon": "plus",
            "_text": "Sentences",
            "_classes": ""
        }
    ]
]

目的是动态生成菜单。

现在,在我看来:leftNavigation.ejs

    <% _.each(leftNavigation, function(entry){%>
        <%- partial('../../../assets/linker/templates/leftNavigationLink', entry)%>
    <%})%>

这很有效,然后就没有了,然后就行了。

部分代码:leftNavigationLink.ejs

<li>
    <a href="<%= _href%>" class="part <%= _classes%> <%= __view.activePage(_controller, _action, controller, action)%>">
        <i class="fa fa-<%= _icon%>"></i>
        <span><%= _text%></span>
    </a>
</li>

这应该很简单,对吗?只需循环我的数组并渲染部分

我也试过这个:

<%- partial('../../../assets/linker/templates/leftNavigationLink', leftNavigation[0])%>

有时可行。有时当我重新启动服务器时,路径错误,无法找到视图。我不明白为什么或如何在两个服务器实例之间改变路径...

我现在确定有时从../../../开始的路径有效并且有时不起作用。有时正确的路径是../../。我不知道为什么,文件位置没有变化,我只是更改了源代码。

我会尝试将所有文​​件放在同一个文件夹中,否则我会休息我的大脑。如果有人有一个使用ejs / ejs-locals和data / loop的partials的工作示例,那将非常感激。

我不知道这些糟糕的编程工具会如何变得如此着名,我可能很难但我会在5分钟内用PHP / Ruby完成。显示精确错误的真实调试器会有很大帮助(而不是像我现在得到的那样随机文件/行)

编辑:嗯,这可能是一个ejs-locals问题,我已经发布在Git回购中但是它不再维护了。 (小于3)

如果有人知道如何覆盖partial函数,我可能会强制从我的应用程序的特定目录中查找并避免自杀。也许你会有更好的想法/解决方法。

0 个答案:

没有答案