タイミングの問題か何かだと思います。コンボボックスの要素はajax呼び出しから取得され、selectmenuを使用すると、ノックアウトデータバインドはそれらの要素をコンボボックスに取得しません。ただし、コメントアウトすると、
$("select").selectmenu();
すべてが正常に機能しています。次のコードを使用しました
function ViewModel() {
// Data
var self = this;
self.loaded = ko.observable(false);
self.groups = ko.observableArray([]);
//....
$.getJSON("api/groups", self.groups)
.done(function () {
self.loaded(true); $('select').selectmenu('refresh', true);
});
}
ko.applyBindings(new ViewModel());
$(document).ready(function () {
// Handler for .ready() called.
$("select").selectmenu();
});
そしてこのhtml
<div>Active Group: <select data-bind="options: groups,
optionsText: 'Name',
optionsValue: 'Id',
value: selectedGroupId,
optionsCaption: 'Choose a group'"></select></div>
ドキュメントの準備が整うと、コンボボックスには「グループを選択」という 1 つの要素が表示されます。Firebug でデータが正常に動作することを確認しました。この問題を解決する方法はありますか?