javascript中的表达式引擎全局变量

时间:2014-06-06 18:52:07

标签: javascript expressionengine

我有两个EE全局变量{warning_en}和{warning_it}。 这些用于根据语言站点“en”或“it”显示消息。 所以在模板中我只使用{warning_ {language_code}} 到现在为止还挺好。 现在,如果在js文件中使用EE变量,如下所示:

  

alert('{warning_en}');

这会输出正确的变量值,但如果我像这样构建字符串:

  

var language_code = 'en';

     

alert('{warning_' + language_code + '}');

这完全输出

  

{warning_en}

我已经尝试了所有我能想到的但没有成功的事情。 有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您可以使用旧的If Else语句根据语言值的设置做出决定,并确定在此之后使用的警报语句。

http://jsfiddle.net/LHcAG/

language_code = "en";
warning_en = "English"; // Assuming en was English
warning_it = "Italian"; // Assuming it was Italian

if (language_code === 'en')
{
    alert(warning_en);
}
else if (language_code === 'it')
{
    alert(warning_it);
}

答案 1 :(得分:1)

似乎Expression Engine会在JavaScript运行之前解析您的模板变量。理想情况下,您应该在Expression Engine中使用实际的语言支持,但如果不这样做,您可以安排将所有逻辑保留在JavaScript中:

language_code = "en";
warning = {
    en: '{warning_en}',
    it: '{warning_it}'
};

alert(warning[language_code]);

请注意,Expression Engine无法使用JavaScript变量,因为它在JavaScript之前运行 - 因此,将所有数据传递给JavaScript并将决策完全作为客户端进行操作是必要的,或者在Expression引擎中使用某种条件系统(我不太了解Expression Engine,告诉你这是否可能)。

答案 2 :(得分:0)

尝试使用类似

的内容
var language_code = 'en';
var warning_en = "This work";
alert(eval('warning_' + language_code ));

请阅读使用eval的风险

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval