gpt4 book ai didi

javascript - 下划线模板中的 bool 检查

转载 作者:行者123 更新时间:2023-12-02 05:28:46 24 4
gpt4 key购买 nike

为了与 asp.net webforms 兼容,我必须替换默认的下划线 teplating 分隔符/Interpolate 正则表达式。从网站上我选择了类似 mustache 的语法

_.templateSettings = {
interpolate : /\{\{(.+?)\}\}/g
};

试过了

_.template("{{if(loggedIn)欢迎{{name}}}}",{name:"James",completed:true});

但似乎这不是使用模板系统检查 bool 表达式的方法(因为发生错误)。但是从文档看来这是可能的

as well as execute arbitrary JavaScript code, with <% … %>

  • 那么我如何使用上述插值执行任意js代码

最佳答案

您的问题是您正在为 <%= ... %> 定义 Mustache 样式的替换项 |但尝试在您通常使用的地方使用它 <% ... %> .来自fine manual :

Define an interpolate regex to match expressions that should be interpolated verbatim, an escape regex to match expressions that should be inserted after being HTML escaped, and an evaluate regex to match expressions that should be evaluated without insertion into the resulting string.

所以有三个正则表达式在起作用:

  1. interpolate 用于 <%= ... %> .
  2. escape 用于 <%- ... %> .
  3. evaluate 用于 <% ... %> .

你告诉 Underscore 使用 {{ ... }}代替 <%= ... %>然后你得到一个错误,因为 if(loggedIn)不能插值。您只需要修复您的 _.templateSettings反射(reflect)您正在尝试做的事情:

_.templateSettings = {
evaluate: /\{\{(.+?)\}\}/g,
interpolate: /\{\{=(.+?)\}\}/g
};

然后您的模板将如下所示:

{{ if(loggedIn) { }}Welcome {{= name }} {{ } }}

演示:http://jsfiddle.net/ambiguous/RwgVg/8/

您需要包含 {}在模板中因为 _.template在编译模板时添加分号,结果如下:

if(loggedIn) {; ...

(感谢 JaredMcAteer 指出这一点)。

您可能还想添加一个 escape 正则表达式,它可能是 /\{\{-(.+?)\}\}/g .

关于javascript - 下划线模板中的 bool 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com