【问题标题】:if statements with underscore.js带有 underscore.js 的 if 语句
【发布时间】:2012-01-27 03:02:14
【问题描述】:

[注:This question 非常相似,但不完全相同。]

我正在尝试使用下划线模板执行if 语句。我试过了:

<% if (_id) { %><%=_id %><% } %>

<% if (_id) { _id } %>

<% if (_id) { <%= _id %> } %>

还有一堆其他的组合,但我总是得到错误

ReferenceError: _id 未定义

有什么建议吗?

【问题讨论】:

    标签: javascript underscore.js


    【解决方案1】:

    我不知道你的代码是什么,但_id 显然是一个标识符。但是,问题在于您没有定义 _id

    至于建议,我可能会建议您定义它或使用已定义的那个。零上下文很难给你更好的建议。

    编辑:你可能想要if(typeof _id != 'undefined')

    【讨论】:

    • 这里是上下文。我通过传递具有属性的对象来呈现模板。事实证明,有时_id 不是该对象的属性之一。在这种情况下,我只想不显示任何内容,但不显示错误。
    • 因为如果你引用未定义的变量,你会得到一些 javascript 引擎的未定义错误。
    • 啊哈。您能否链接到有关此的更多信息。因为我经常使用if(variable) { ... } 模式,其中variable 可能是undefined
    • 您可能指的是对象属性 (if(a.b)) 或函数参数。我认为它在这些情况下效果更好。
    【解决方案2】:

    有点老了,但这是我解决类似问题的方法:

    在你的模型中:

    var Model = Backbone.Model.extend({
    
        defaults: {
            field1: null
        }
    
    });
    

    然后在你的模板中你可以这样做:

    <% if (field1) { %>
        ...
    <% } else { %>
        ...
    <% } %>
    

    【讨论】:

      猜你喜欢
      • 2016-06-18
      • 1970-01-01
      • 2016-08-15
      • 2014-10-26
      • 2018-02-20
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多