在运行测试时,使用模板未定义变量下划线否

时间:2014-03-13 19:53:50

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

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

所以我的模板声明如下:

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

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

通过用this或self或obj替换数据,它似乎工作正常。我想知道是否有任何惩罚使用这样的话:

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

OR

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

OR

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

感谢您的信息。

1 个答案:

答案 0 :(得分:0)

你期待着&#39;头衔&#39;作为对象中的键,而对象包含的键是&#39; title&#39;。此外,您无需将第三个参数传递给_.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);