Javascript 使用DevExtreme和KnockOut绑定所选值时出错

Javascript 使用DevExtreme和KnockOut绑定所选值时出错,javascript,mobile,knockout.js,devexpress,devextreme,Javascript,Mobile,Knockout.js,Devexpress,Devextreme,我正在尝试开发一个小应用程序 我已经建立了一个登录视图,它可以工作,我能够绑定用户编写的数据。在此之后,我将显示两个选择框。第一个与列表绑定(正确),第二个必须与从第一个列表中选择值后填充的列表绑定 我无法读取从第一个列表中选择的值 我有这个html: <div class="dx-fieldset"> <div class="dx-field"> <div class="dx-field-label">

我正在尝试开发一个小应用程序

我已经建立了一个登录视图,它可以工作,我能够绑定用户编写的数据。在此之后,我将显示两个选择框。第一个与列表绑定(正确),第二个必须与从第一个列表中选择值后填充的列表绑定

我无法读取从第一个列表中选择的值

我有这个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;
};
overview app.afterLogin=函数(参数){
var isReady=$.Deferred();
var viewModel={
rete:ko.可观察(“”),
impianto:ko.可观察(“”),
信息来源:OverviewAPP.listaReti,
is_impiantiSource:OverviewAPP.listaImpianti,
setRete:函数(){
log(viewModel.rete);
var nRetisti=概览app.listaretimpianti.length;
对于(i=0;i
在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}

d(){if(0可观察对象是函数。这就是为什么您在控制台中获得一个函数。调用rete函数以获取其值:

viewmodel.rete();
另请参阅描述这一点的帮助主题(在“阅读和书写观察对象”下)

这是获取新值的方法。然后,需要更新依赖查找数据源。为此,请将is_impiantiSource属性设置为可观察数组:

is_impiantiSource: ko.observableArray(OverviewAPP.listaImpianti),
在此之后,在setRene中对其进行修改,如:

viewModel.is_impiantiSource(OverviewAPP.listaImpianti)

另请参见如何在击倒中使用数组。可观察的是setter/getter函数。您可能需要
console.log(viewModel.rete())
@RoyJ谢谢你的评论。同时,我用另一种方式做了这件事,效果很好。你能阅读我的更新吗?谢谢你的回答。同时,我用另一种方式做了这件事,效果很好。你能阅读我的更新吗?如果你处理onSelectionChanged事件。它没有e.value参数:也许,你可以处理onValueChanged事件()?OverviewAPP.ListaiPianti是数组吗?如果是,请调用viewModel.Is_impiantiSource(OverviewAPP.ListaiPianti)让我们看看。
viewModel.is_impiantiSource(OverviewAPP.listaImpianti)