我试图做一些相当简单的事 - 至少应该是这样。那不计算我和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
函数,我可能会强制从我的应用程序的特定目录中查找并避免自杀。也许你会有更好的想法/解决方法。