我认为这是时间问题。组合框的元素来自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:&nbsp; <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

10-04 15:42