使用JSON填充ComboBox。 Dojo 1.7打破了它。 :-(

时间:2012-04-20 17:51:15

标签: json combobox dojo

我有一个使用JSON源填充组合框的应用程序。 HTML低于......

<label for="user">User: </label>
<input dojoType="dijit.form.ComboBox" class="selectionNav tableData" value="" name="user" id="sample/user">

来自样本/用户的JSON“在这里......

{
"identifier": "user",
"label": "label",
"items": [
    {
        "user": null,
        "label": null
    },
    {
        "user": "Joe Wilkie",
        "label": "Joe Wilkie"
    }
  ]
}

在dojo 1.7之前,这就像一个冠军!在升级dojo之后,我在firebug中注意到JSON仍然正在被提取并且有效但它不再填充comboBox。

任何人都知道如何解决这个问题?提前谢谢了。 珍妮

1 个答案:

答案 0 :(得分:1)

ComboBox上的默认搜索属性是name,它不在商店中。将searchAttr添加到组合框中。

<input dojoType="dijit.form.ComboBox" searchAttr="label" ...

这是我的完整测试代码:

<!DOCTYPE html>
<html >
<head>

    <link rel="stylesheet" type="text/css" href="dojo/1.7.2/dijit/themes/claro/claro.css" />
    <style type="text/css">html, body {
        width: 100%;
        height: 100%;
        margin: 0;
    }</style>
    <script src="dojo/1.7.2/dojo/dojo.js" data-dojo-config="parseOnLoad: true"></script>
    <script>require(["dojo/ready", "dojo/data/ItemFileReadStore", "dijit/form/ComboBox"], 

    function(ready, Store, ComboBox) {
      ready(function() {
        var store = new Store({data: {
          "identifier": "user",
          "label": "label",
          "items": [
              {
                  "user": null,
                  "label": null
              },
              {
                  "user": "Joe Wilkie",
                  "label": "Joe Wilkie"
              }
            ]
        }});

    dijit.byId('user').set('store', store);
  });
});
</script>
</head>
<body class="claro">
    <label for="user">User: </label>
    <input dojoType="dijit.form.ComboBox" searchAttr="label" class="selectionNav tableData" value="" name="user" id="user" />        
</body>
</html>