Javascript - 检查文本/模板脚本中是否存在字段

标签 javascript elasticsearch underscore.js underscore.js-templating

我有一个 text/template 类型的脚本,其中显示从 ElasticSearch 数据库检索到的一些值。我的脚本如下所示:

<script type="text/template" id="script1">
    <div style="color:black;"><%= highlight.field1 %></div>
</script>

但是,有时未定义此突出显示值,我想改为显示 _source.field1。我最初的猜测是添加一个 try catch,但这行不通:

<script type="text/template" id="script1">
    <div style="color:black;"><%= try{ highlight.field1 } catch(e) { _source.field1 } %></div>
</script>

稍后编辑:突出显示并不总是可用。相反,_source 字段始终可用。

此外,我正在使用 backbone.js,并在 views.js 中定义:

    DocumentView = Backbone.View.extend({  
        tagName : "div",  
        className: "document well",
        initialize: function() {
            this.model.bind('change', this.render, this);
            this.model.bind('destroy', this.remove, this);
            },
        template: [_.template($("#script1").html())],
        render : function() {
            this.$el.html(this.template[0](this.model.toJSON())); 
            return this;
        }
     });

模型是:

{
  "_index": "index1",
  "_type": "doc",
  "_id": "id1",
  "_score": 10.139895,
  "_source": {
    "field1": "fieldValue1"
  },
  "highlight": {
    "field1": [
      "highlightedFieldValue1"
    ]
  }
}

还有其他建议吗?

最佳答案

我认为在我们的例子中 try..catch 是开销,你可以使用 logical expressions

  <script type="text/template" id="script1">
    <div style="color:black;">
      <% if (typeof highlight !== 'undefined' && highlight.field1) { %>
        <%= highlight.field1.length ? highlight.field1[0] : highlight.field1  %>
      <% } else if (typeof _source !== 'undefined' && _source.field1) { %>
        <%= _source.field1 %>
      <% } %>
    </div>  
  </script>

关于Javascript - 检查文本/模板脚本中是否存在字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27233032/

相关文章:

javascript - 按位运算符 x >> 1 和 x >> 0

javascript - 检测 CSS 文件何时完成开关

javascript - 使用 javascript 获取从 scriptlet 定义的 div 元素

javascript - 当与 require.js 作为 AMD 模块一起使用时覆盖 underscore.js 默认值

javascript underscorejs 分组和求和数据

node.js - Parse-Server 本地安装 - 外部模块

javascript - 对 JSON 字符串的 JSON 解析抛出 "Cannot convert object to primitive value"

elasticsearch - Elasticsearch 在单个查询中找到两个字段的总和

python-3.x - Python Elasticsearch 7.05索引编制失败

post - ElasticSearch自定义插件无法从发布请求参数获取