从变量中定义JavaScript对象文字中的字段名称

时间:2017-11-08 20:50:38

标签: javascript

我需要动态更改字段

   this.search = function(search, match) {
          var deferred = $q.defer()
          search({
            size: 10000,
            index: "products",
            body: {
              "query": {
                "match": {
                  [search]: {
                    "query": match,
                    // "operator": "and",
                    type:"phrase"
                  }
                }
              }
            }

但显示错误30:16错误解析错误:意外的令牌[

2 个答案:

答案 0 :(得分:1)

您必须将其拆分,以便动态构建 body 对象:

var body = {
    "query": {
        "match": { }
    }
};
body.query.match[search] = {
    "query": match,
    "type": "phrase"
};

答案 1 :(得分:0)

这不是AngularJS问题 - 问题是当您使用的浏览器不支持时,您尝试使用 Computed Property Name 作为对象文字。

计算机属性名称文档链接:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names

要查看哪些浏览器可以&不能使用计算属性名称

https://kangax.github.io/compat-table/es6/#test-object_literal_extensions_computed_properties