gpt4 book ai didi

javascript - 使用带有/数字键的对象渲染 _.template

转载 作者:行者123 更新时间:2023-11-28 15:53:20 24 4
gpt4 key购买 nike

使用 underscore.js 的 template 方法遇到一些奇怪的行为:

var test = ['first', 'test'];
console.log(_.template('this is a <%= 1 %> ', test));

( fiddle :http://jsfiddle.net/adamb/mbD6E/)

此片段输出:“这是一个 1”,而预期结果是“这是一个测试”

没有抛出任何错误。我研究过source-code对于这个结果没有明显的解释。要求我仅在模板中使用插值。我尝试使用 _.extend({}, test) 将数组显式转换为集合,但没有骰子。

我怎样才能让它工作?

最佳答案

您可以使用以下命令检查编译后的模板代码:

_.template('this is a <%= 1 %> ').source

它给出了这个函数:

function(obj){
var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};
with(obj||{}){
__p+='this is a '+
( 1 )+
' ';
}
return __p;
}

关键部分是:

with(obj){
(1)
}

因为 1 不是有效的属性/变量名称,所以它不会尝试匹配您正在模板化的对象的属性,因此仅打印出“1”。

如果您要使用像 {zero: 'first', one: 'test'} 这样的对象和 'this is a <%= one %> ' 的模板,那么这看起来像:

with(obj){
(one)
}

这相当于 obj.one

关于javascript - 使用带有/数字键的对象渲染 _.template,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19821180/

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