Как динамически изменить searchAttr комбинированного списка на основе переключателя в dojo?

Я пытаюсь изменить значение 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;
    }
} 

1 ответ

Ванильный способ сделать это, чтобы связать onChange обработчик событий в вашем require обратный вызов к селектору, как input[name=searchType], обновление comboBox.searchAttr каждый раз, когда происходит событие изменения.

Может быть, есть более специфический способ сделать это, но я не могу с этим поделать!

Другие вопросы по тегам