【问题标题】:Underscore no with templates undefined variable when running test运行测试时使用模板未定义变量下划线
【发布时间】:2014-03-13 19:53:49
【问题描述】:

我正在使用下划线模板来创建一些标记。我使用 no with 方法,所以我正在定义变量设置。

所以我的模板声明如下所示:

_.template('<div><%= data.title %></div>', { titles: title }, { variable: 'data'});

它工作正常并且可以很好地评估模板,但是当我运行我的单元测试时,似乎我得到的错误数据是未定义的。

通过用 this、self 或 obj 替换数据,它似乎工作正常。我想知道这样使用这些词是否会受到惩罚:

_.template('<div><%= this.title %></div>', { titles: title }, { variable: 'this'});

_.template('<div><%= this.title %></div>', { titles: title }, { variable: 'obj'});

_.template('<div><%= self.title %></div>', { titles: title }, { variable: 'self'});

感谢您的信息。

【问题讨论】:

  • 您的模板需要一个名为title 的属性,但数据对象有一个名为titles 的属性。错字?

标签: javascript unit-testing underscore.js underscore.js-templating


【解决方案1】:

您期望“titles”作为对象中的键,而对象包含的键是“title”。此外,您无需将第三个参数传递给_.template

由于_.template返回的是一个函数,你可以通过传递它需要的对象作为参数直接调用这个函数,如下所示:

Working Demo

JavaScript:

var temp = {"title": "Hello world!"};
/* Approach 1
var t = _.template('<div><%= title %></div>');
document.getElementById("output").innerHTML = t(temp);
*/
/* Approach 2 */
document.getElementById("output").innerHTML = _.template('<div><%= title %></div>', temp);

【讨论】:

    猜你喜欢
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    相关资源
    最近更新 更多