1

コンボボックスに 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 をアップグレードした後、JSON は正常に取得され、有効ですが、comboBox に入力されていないことが firebug でわかりました。

これを修正する方法はありますか?よろしくお願いします。ジャニー

4

1 に答える 1

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>
于 2012-04-20T18:50:09.630 に答える