轻松自动完成,引用深层嵌套值

时间:2018-02-20 01:55:59

标签: javascript jquery json autocomplete

我正在使用名为“Easy Auto Complete”的整洁自动完成程序。

该程序运行良好,但我对如何引用深层嵌套节点集感到困惑。运行show的javascript使用标记为“listlocation”的属性,该属性将嵌套在JSON提要的根目录之外的值。

但是,当尝试从“播放器”数据集中提取数据(例如ID)时,我没有成功(开发人员工具告诉我我没有收到数据)。我曾经尝试过“玩家”,“playerstatsentry.player”,“cumulativeplayerstats.playerstatsentry”和其他变种。

当我使用JSON Feed时,其中值位于根或ONE级别(根据the documentation),该功能非常有效。

引用播放器数组以获取ID值的最佳方法是什么?

JSON

{
"cumulativeplayerstats": {
    "lastUpdatedOn": "2018-02-13 1:59:59 PM",
    "playerstatsentry": 
        [
            { "player": { "ID": "5107" } }
            ....

JAVASCRIPT

var options = {
    url: "assets/data.json",
    listLocation: "cumulativeplayerstats.playerstatsentry.player",
    getValue: "LastName"
    list: {
        match: {
            enabled: true
        }
    }
};
$("#provider-json").easyAutocomplete(options);

1 个答案:

答案 0 :(得分:3)

该插件需要一组object和一个property名称,该名称将用作自动填充帮助。您需要逻辑重构data.json文件:

案例1:JSON结构为

{
   "cumulativeplayerstats": {
      "lastUpdatedOn": "2018-02-13 1:59:59 PM",
      "playerstatsentry": [
         {
            "player": {
               "ID": "5106"
            },
            "LastName": "Test 1"
         },
         {
            "player": {
               "ID": "5107"
            },
            "LastName": "Test 2"
         },
         {
            "player": {
               "ID": "5108"
            },
            "LastName": "Test 3"
         }
      ]
   }
}

使用自动完成配置:

<input id="provider-json" />
<script>
var options = {
    url: "assets/data.json",
    listLocation: function(data) {
        return data.cumulativeplayerstats.playerstatsentry;
    },
    getValue: "LastName",
    list: {
        match: {
            enabled: true
        }
    }
};
$("#provider-json").easyAutocomplete(options);

案例2:因为getValue属性也支持此插件中的功能。如果JSON结构如下:

{
   "cumulativeplayerstats": {
      "lastUpdatedOn": "2018-02-13 1:59:59 PM",
      "playerstatsentry": [
         {
            "player": {
               "ID": "5106",
               "LastName": "Test 1"
            }
         },
         {
            "player": {
               "ID": "5107",
               "LastName": "Test 2"
            }
         },
         {
            "player": {
               "ID": "5108",
               "LastName": "Test 3"
            }
         }
      ]
   }
}

使用自动填充代码:

var options = {
    url: "assets/data.json",
    listLocation: function(data) {
        return data.cumulativeplayerstats.playerstatsentry;
    },
    getValue: function(item) {
        return item.player.LastName;
    },
    list: {
        match: {
            enabled: true
        }
    }
};
$("#provider-json").easyAutocomplete(options);

希望这会有所帮助!!