Я пытаюсь разработать небольшое приложение.Ошибка при привязке выбранного значения с помощью DevExtreme и KnockOut
Я сделал вид входа, и он работает, я могу связать данные, написанные пользователем. После этого я показываю два окна выбора. Первая привязана к списку (правильно), а вторая должна быть привязана к списку, заполненному после того, как значение выбрано из первого.
Я не могу прочитать значение, выбранное из первого списка.
У меня есть этот HTML:
<div class="dx-fieldset">
<div class="dx-field">
<div class="dx-field-label">Rete</div>
<div class="dx-field-value"
data-bind="dxLookup: { dataSource: is_retistiSource, value: rete, displayExpr: 'NOME', title: 'Retisti associati', placeholder: 'Selezionare rete',
onSelectionChanged:setRete }" />
</div>
<div class="dx-field">
<div class="dx-field-label">Impianto</div>
<div class="dx-field-value"
data-bind="dxLookup: { dataSource: is_impiantiSource, value: impianto, displayExpr: 'NOME', title: 'Impianti associati', placeholder: 'Selezionare impianto' }" />
</div>
</div>
и это JavaScript:
OverviewAPP.afterLogin = function (params) {
var isReady = $.Deferred();
var viewModel = {
rete: ko.observable(""),
impianto: ko.observable(""),
is_retistiSource: OverviewAPP.listaReti,
is_impiantiSource: OverviewAPP.listaImpianti,
setRete: function() {
console.log(viewModel.rete);
var nRetisti = OverviewAPP.listaRetiImpianti.length;
for (i = 0; i < nRetisti; i++) {
if (OverviewAPP.listaRetiImpianti[i]["retista"]["NOME"] == this.rete)
{
OverviewAPP.listaImpianti = listaRetiImpianti[i]["listaImpianti"];
break;
}
}
is_impiantiSource = OverviewAPP.listaImpianti;
},
close: function() {
OverviewAPP.app.back();
}
};
return viewModel;
};
В функции setRete, с линией "console.log (viewModel.rete);" Я вижу это выход:
d(){if(0<arguments.length)return d.Wa(c,arguments[0])&&(d.X(),c=arguments[0],d.W()),this;a.k.Ob(d);return c}
Почему? Как я могу привязать и прочитать выбранное значение?
UPDATE: Я сделал таким образом, он работает:
setRete: function (e) {
OverviewAPP.IDrete = e.value;
var nRetisti = OverviewAPP.listaRetiImpianti.length;
for (i = 0; i < nRetisti; i++) {
if (OverviewAPP.listaRetiImpianti[i]["retista"]["NOME"] == e.value["NOME"])
{
OverviewAPP.listaImpianti = OverviewAPP.listaRetiImpianti[i]["listaImpianti"];
break;
}
}
//ko.applyBindings(viewModel);
},
Но я не знаю, как обновить мой второй список, "is_impiantiSource".
наблюдаемыми являются функции setter/getter. Вероятно, вы хотите 'console.log (viewModel.rete())' –
@RoyJ благодарит за комментарий. Между тем, я сделал это по-другому, и это работает. Можете ли вы прочитать мое обновление? –