1

タイミングの問題か何かだと思います。コンボボックスの要素は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>

ドキュメントの準備が整うと、コンボボックスには「グループを選択」という 1 つの要素が表示されます。Firebug でデータが正常に動作することを確認しました。この問題を解決する方法はありますか?

4

1 に答える 1

0

selectmenuのイベントとのカスタムバインディングが必要だと思います。以下を参照してください。

http://knockoutjs.com/documentation/event-binding.html

KnockoutとjQueryMobile:データを選択リストにバインドする

于 2012-08-10T01:23:19.580 に答える