Dojo - 如何设置我的JSON以使用预设的值填充另一个dijit.form.ComboBox

时间:2012-03-09 23:55:27

标签: dojo

以下是一个例子:

我想设置我的JSON,以便它可以有一个国家列表对应一个状态列表 (1)首先我正在设置storeData。这是我遇到麻烦的地方。如何进行设置,以便我可以拥有一个国家组合框,如下面的示例和另一个组合框,它将根据国家/地区的选择预先设定值:例如:如果用户从中选择“美国”组合框,第二个组合框应该有一个'德克萨斯'和'加利福尼亚'的列表

<script type="text/javascript>
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("dijit.form.ComboBox");

var storeData = { identifier: 'name',
items: [
{ name: 'United States', state: ['Texas', 'California'] },
{ name: 'Canada', state: ['Alberta', 'Quebec'] }
]};

//
function init(){
 // Function to perform a lookup on the datastore on each change event of the combo  
    function getItemFromStore(){
    function lookUpState(item, request){
       var lNode = dijit.byId("country");

       if(!item){
           lNode.setDisplayedValue("");

       }else{
           //set up the pre-select list of states
           //logic goes here

       }
    }
 //invoke the lookup
    country.fetchItemByIdentity({identity: combo.getValue(), onItem: lookUpState});
    }
 // Link any change events in the combo to driving the fetchItemByIdentity lookup.
  dojo.connect(combo, "onChange", getItemFromStore);
  }
 // Set the init function to run when dojo loading and page parsing has completed.
 dojo.ready(init);
 </script>

 //HTML
 <div data-dojo-type="dojo.data.ItemFileReadStore" 
 data-dojo- props="data:storeData"     data-dojo-id="country"></div>
 <div data-dojo-type="dijit.form.ComboBox" data-dojo-props=
 "store:country, searchAttr:'name'" data-dojo-id="combo"></div>

<div class="formRow">
<label for="TestBox">State</label>
<input dojoType="dijit.form.ComboBox" name="state" id="state" />
</div>

1 个答案:

答案 0 :(得分:0)

请参阅: http://livedocs.dojotoolkit.org/dijit/form/FilteringSelect#codependent-filteringselect-combobox-widgets

寻找相关的州/城市示例。

您的日期需要重新调整为上面链接中示例中的格式