Как динамически изменить 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
каждый раз, когда происходит событие изменения.
Может быть, есть более специфический способ сделать это, но я не могу с этим поделать!