我认为这是时间问题。组合框的元素来自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>
准备好文档后,组合框将具有单个元素“选择组”。我验证了Firebug的数据是否正常。有什么办法解决这个问题?
最佳答案
我认为您需要对selectmenu事件进行自定义绑定。请参考以下。
http://knockoutjs.com/documentation/event-binding.html
Knockout and jQuery Mobile: Binding data to select lists