2017-08-07 127 views
-1

我访问使用readFileSync一个HTML文件中像这样访问变量值

var content = fs.readFileSync("client/index.html", "utf-8"); 

并传递内容的HTML。

Students.afterRemote('create', function(ctx, result, next) { 
loopback.Email.send({ 
      to: result.email, 
      from: "[email protected]", 
      subject: "Thanks for choosing Us", 
      text: "text message", 
      html: content, 
      var: { 
       myVar1: 'a custom value' 
      }, 
      headers: { 
       "X-My-Header": "My Custom header" 
      } 
     }) 
     .then(function(response) { 
     }) 
     .catch(function(err) { 
     }); 
} 

在我的HTML文件,我有这样的代码

result.name + "<p> Your account is created successfully.Thanks for creating an account</p>" 

在电子邮件它没有给我result.name的价值。它正在显示result.name。我如何获得它的价值?谢谢

+0

你从来没有定义'result'。我觉得你已经提供了几段代码而没有尝试做出正确的[mcve] – Quentin

+0

[tag:loopback]标签在这里看起来并不相关。 – Quentin

+0

我得到正确的结果。问题是我如何访问它? –

回答

0

当你在字符串里面有一些看起来像JavaScript代码的东西时,它仍然只是该字符串的一部分。它不会被执行,就好像它是JavaScript代码一样。

var result = { name: "bar" }; 
 
var string = ` result.name + "<p> Your account is created successfully.Thanks for creating an account</p>"`; 
 
console.log(string);

如果你想使用变量,那么你就需要把它们写在JavaScript中,而不是在你读入一个变量的文本文件。

var result = { name: "bar" }; 
 
var string = `<p> Your account is created successfully.Thanks for creating an account</p>`; 
 
var output = result.name + string; 
 
console.log(output);

你可以把占位符的文件中,然后使用替代电话...

var result = { name: "bar" }; 
 
var string = `<<<name>>><p> Your account is created successfully.Thanks for creating an account</p>`; 
 
string = string.replace("<<<name>>>", result.name); 
 
console.log(string);

...但在这个阶段你正在创建自己的模板语言,应该可以选择an off the shelf option喜欢Nunjucks

var result = { name: "bar" }; 
 
var template = `{{ name }}<p> Your account is created successfully.Thanks for creating an account</p>`; 
 

 
console.log(nunjucks.renderString(template, result));
<script src="https://cdnjs.cloudflare.com/ajax/libs/nunjucks/3.0.1/nunjucks.min.js"></script>

+0

谢谢你的时间。赞赏你的帮助。 –