下拉列表未从计算的可观察项更新

dropdown not updated from computed observable

本文关键字:观察 更新 计算 下拉列表      更新时间:2023-09-26

我有以下计算的可观测值:

        self.getMovieDates = ko.computed(function() {
            $.ajax({
                url: '/Utilities/UpdateTimesDropdown',
                data: { apiId: self.movieSelectedValue(), locationId: self.theatreSelectedValue() },
                dataType: 'jsonp',
                success: function (data) {
                    console.log(data.showtimes);
                    return data.showtimes;
                }
            });
        }, self);

html看起来像这样:

    <select id="DateDD" data-bind="options: getMovieDates,
                            optionsText: 'title',
                            optionsValue: 'id',
                            optionsCaption: 'Select Showdate',
                            value: dateSelected"></select>

我可以在firebug中看到ajax请求正在发出,我收到了一些值。"console.log(data.showtimes)"看起来像这样:

 [Object { id="3/24/2015", title="Today (Tue, Mar 24, 2015)"}, Object { id="3/25/2015", title="Tomorrow (Wed, Mar 25, 2015)"}, Object { id="3/26/2015", title="Thu, Mar 26, 2015"}]

不幸的是,下拉列表没有被填充,我的想法越来越少,有什么想法吗?

成功函数将数据返回给调用它的jquery内部,而不是传递给计算的外部函数。

你必须做一个可观察的,然后把它设置在你的成功函数中。然后使用视图模型中的可观察对象,而不是计算对象。

编辑:您自己的有用链接:https://github.com/knockout/knockout/wiki/Asynchronous-Dependent-Observables:)