我尝试使用带有Lodash'_.template()
的模板文字,根据另一个确定打开/关闭的函数的响应从JSON文件中选择消息,但它对我不起作用。
流量:
- 函数运行逻辑并通过
opencloseResponse.openclose
对象返回open
或close
(假设工作正常,但未在下面的代码片段中显示) - 使用Lodash
_.template()
,我将用户的名字与messages.open
或messages.close
一起输入为first_name
- 显示消息文本
不带模板文字的工作示例
messages.json
{
"messages": {
"open": "Hello ${ first_name }! We are open!",
"closed": "Hello ${ first_name }! We are closed!"
}
}
app.js
const _ = require('lodash');
const { messages } = require('messages.json');
const sendMessage = _.template(messages.open);
console.log(sendMessage({ first_name: 'Jeremy' }));
output
Hello Jeremy! We are open!
使用模板文字的失败示例
messages.json
个
{
"messages": {
"open": "Hello ${ first_name }! We are open!",
"closed": "Hello ${ first_name }! We are closed!"
}
}
app.js
const _ = require('lodash');
const { messages } = require('messages.json');
const sendMessage = _.template(`messages.${opencloseResponse.openclose}`);
console.log(sendMessage({ first_name: 'Jeremy' }));
output
messages.open
我希望我错过的只是一些简单的事情。它已经让我发疯了一整天。我感谢任何帮助!
2条答案
按热度按时间v1l68za41#
Lodash的模板和JavaScript的模板文字是完全不同的动物。如果你想继续使用这些JSON文件,你不会使用JavaScript的模板文字,你只需要使用动态属性访问:
如果你想使用模板文字,你可以把它们 Package 在 functions 中,比如,你可以使用
messages.js
:然后
或者,您也可以让函式接受对象,如同您的Lodash程式码一样(如果您愿意的话):
然后
h7appiyu2#
您不需要样板常值。
只需使用方括号
[]
表示法来访问message
属性