Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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 EJS模板语言内部逻辑以某种方式失败_Javascript_Node.js_Ejs - Fatal编程技术网

Javascript EJS模板语言内部逻辑以某种方式失败

Javascript EJS模板语言内部逻辑以某种方式失败,javascript,node.js,ejs,Javascript,Node.js,Ejs,我正在使用EJS部分,我只是遇到了一个错误,即使在浪费了数小时的调试之后,我也无法找出它 以下是加载分部文件的代码: <%- partial(__view.partialPath('tag_popover'), { title_popover: sentence.nickname, content_tag: '#' + sentence.nickname, icon_popover: 'http://placehold.it/64x64' }) %> <

我正在使用EJS部分,我只是遇到了一个错误,即使在浪费了数小时的调试之后,我也无法找出它

以下是加载分部文件的代码:

<%- partial(__view.partialPath('tag_popover'), {
    title_popover: sentence.nickname,
    content_tag: '#' + sentence.nickname,
    icon_popover: 'http://placehold.it/64x64'
}) %>

<%- partial(__view.partialPath('tag_popover'), {
    title_popover: 'Last revision',
    content_tag: '#' + sentence.sentenceId
}) %>
最后是
popover\u revision\u translation
partial:

<%
/**
 * Creates a standalone tag with dynamic title, content and popover for additional content.
 *
 * @param classes_tag       CSS classes. ['tags']
 * @param content_tag       Tag content.
 * @param icon_popover      Popover icon. [none]
 * @param title_popover     Popover title, will be displayed.
 */

title_popover = typeof title_popover != 'undefined' ? title_popover : ''
classes_tag = typeof classes_tag != 'undefined' ? classes_tag : 'tags'
icon_popover = typeof icon_popover != 'undefined' ? icon_popover : false
content_tag = typeof content_tag != 'undefined' ? content_tag : ''
%>

<li class="<%= classes_tag %>" title="<%= title_popover %>">
    <a href="#"><%= content_tag %></a>
    <%- partial(__view.partialPath('popover_revision_translation'), {
        icon_popover: icon_popover
    }) %>
</li>
<%
/**
 * Creates a standalone popover with dynamic title and body.
 *
 * @param icon_tag   Icon. [none]
 */
icon_popover = typeof icon_popover != 'undefined' ? icon_popover : ''
%>
<% console.log('--------------------------'+typeof icon_popover)%>
<% console.log(icon_popover ? true: false)%>

<div class="custom-popover-content hide" role="seealso">
    <% if(icon_popover){ %>
        <img src='<%= icon_popover%>' />
    <% } %>
    <span>Test</span>
</div>
所以基本上,无论它是
字符串
还是
,它都会进入我的
if语句
,我不知道为什么

我做了更多的测试,比如
,在这两种情况下我得到了相同的结果


所以我真的不明白,我认为这可能与一些EJS内部问题或缓存有关,但不管怎样,日志显示的某些内容似乎符合逻辑,但却不符合逻辑,这真的很奇怪…

看起来像是范围问题。我不知道您的工具链的详细信息,但“参数”可能在全局名称空间或公共名称空间中。检查您的文档以了解如何创建局部变量(或者可能不可能)。如果您找不到任何其他内容,请尝试在每个定义前面放置
var
,例如

var title_popover = typeof title_popover != 'undefined' ? title_popover : '';
var classes_tag = typeof classes_tag != 'undefined' ? classes_tag : 'tags';
var icon_popover = typeof icon_popover != 'undefined' ? icon_popover : false;
var content_tag = typeof content_tag != 'undefined' ? content_tag : '';

我不知道这是否有效,因为我不知道EJS,但这是一个值得尝试的猜测。

这与EJS失败无关,实际上是因为javascript动态解析总是使用第一个元素,其中有图标。生成的源代码是正确的,但是它的使用却不正确,并且总是显示相同的内容


这里没有黑魔法。:)

我已经试过了,如果我这么做了,那么它会杀死参数,因为它会在加载之前设置
title\u popover
,就像它从左到右而不是传统的从右到左读取代码一样。所以我最终得到了一个空的变量。。。我还认为这是一个范围问题,但奇怪的是,它正确地记录了我所期望的内容,但它的行为却与之不同。
var title_popover = typeof title_popover != 'undefined' ? title_popover : '';
var classes_tag = typeof classes_tag != 'undefined' ? classes_tag : 'tags';
var icon_popover = typeof icon_popover != 'undefined' ? icon_popover : false;
var content_tag = typeof content_tag != 'undefined' ? content_tag : '';