下拉列表未从计算的observable更新

时间:2015-03-24 14:21:21

标签: javascript ajax knockout.js

我有以下计算的observable:

        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"}]

不幸的是,下降只是没有填充,我的想法,任何想法?

1 个答案:

答案 0 :(得分:1)

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

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

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