如何根据道场中的单选按钮动态更改组合框的搜索Attr?



我正在尝试基于单选按钮更改组合框的searchAttr的值。以下是我迄今为止的工作片段。

<html>
<head>
  <title>Test</title>
  <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dijit/themes/claro/claro.css">
  <script>
    dojoConfig = {
      parseOnLoad: true
    }
  </script>
  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dojo/dojo.js"></script>
  <script type="text/javascript">
    require([
      "dojo/store/Memory", "dijit/form/ComboBox", "dojo/domReady!"
    ], function(Memory, ComboBox) {
      var infoStore = new Memory({
        data: [{
          "prop1": "a1",
          "prop2": "a2"
        }, {
          "prop1": "b1",
          "prop2": "b2"
        }, {
          "prop1": "c1",
          "prop2": "c2"
        }]
      });
      var comboBox = new ComboBox({
        id: "combo_id",
        name: "info",
        store: infoStore,
        searchAttr: "prop1"
      }, "combo_id");
    });
  </script>
</head>
<body class="claro">
  <div>
    <input type="radio" name="searchType" id="search_type_one" />
    <label for="search_type_one">Search Type One</label>
    <input type="radio" name="searchType" id="search_type_two" />
    <label for="search_type_two">Search Type Two</label>
  </div>
  <input id="combo_id" />
  <p>
    <button onClick="alert(dijit.byId('combo_id').get('value'))">Get value</button>
  </p>
</body>
</html>

这是我试图实现的伪代码

searchAttr: function (item){
    if (searchType.value == "one"){
        return item.prop1;
    } else if (searchType == "two"){
        return item.prop2;
    }
} 

实现这一点的普通方法是将require回调中的onChange事件处理程序绑定到类似input[name=searchType]的选择器,每次触发更改事件时更新comboBox.searchAttr

可能有一种更具体的道场方式可以做到这一点,但我无能为力!

最新更新