javascript - 忽略下划线模板中未定义的数据/变量

标签 javascript backbone.js underscore.js

还在学习 Backbone ,请多多包涵;

我正在尝试将带有空白字段的新模型添加到 View 中,但是我创建的模板有一大堆

<input value="<%= some_value %>" type="whatever" />

获取数据时工作得非常好,它填充它并且一切顺利。当我想创建一个新的(空白)渲染 View 时,问题就出现了,它给了我
Uncaught ReferenceError: some_value is not defined

我可以设置defaults (我已经为一些在数据库中具有默认值的人做了)但这意味着用空格输入其中的 40 多个;有没有更好的方法来处理这个?

我正在摆弄下划线模板本身,尝试类似 <%= if(some_value != undefined){ some_value } %>但这似乎也有点麻烦。

最佳答案

在包装器对象中传递模板数据。缺少属性访问不会引发错误:

所以,而不是:

var template = _.template('<%= foo %><%= bar %>');
var model = {foo:'foo'};
var result = template(model); //-> Error

尝试:
var template = _.template('<%= model.foo %><%= model.bar %>');
var model = {foo:'foo'};
var result = template({model:model}); //-> "foo"

关于javascript - 忽略下划线模板中未定义的数据/变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15283741/

相关文章:

javascript - 如何在 Controller 中定义来自另一个文件的变量?

javascript - 使用nodejs包装器(编译运行)来运行cpp代码是否可行?

javascript - 使用允许新模型和 Model.find() 的 Node 创建我自己的模型

javascript - 如何从 Backbone 中的响应访问responseText?

javascript - Backbone.js 和 CakePHP

javascript - 平均返回率太大(两个变量)

javascript - 为什么 Symfony2/Twig 只能加载一些 js 库?

javascript - 如何填充固定长度日期数组中的空白

backbone.js - 主干点击事件绑定(bind)未绑定(bind)到 DOM 元素

javascript - Underscore.js _.map 函数 : skip a value