我有以下计算的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"}]
不幸的是,下降只是没有填充,我的想法,任何想法?
答案 0 :(得分:1)
你的成功函数是将数据返回到调用它的jquery内部,而不是返回到你传递给计算的外部函数。
你必须制作一个可观察的,然后在你的成功函数中设置它。然后在视图模型中使用您的observable,而不是您计算的。
编辑:您自己的有用链接:https://github.com/knockout/knockout/wiki/Asynchronous-Dependent-Observables:)