0

knockoutjs と jquery mobile では、配列からチェックボックスのリストを作成する必要があります。チェックボックスのリストがレンダリングされているようですが、クリックに反応しませんでした。http://jsfiddle.net/9zx7F/

リストを作成するために、controlgroup の data-role を持つ fieldset タグを使用しました。リストビューでもulを試しましたが、同じ問題です。

編集: 詳細 - ko.applyBindings のタイミングに関連しているようです。ローカルホストで同じコードを実行するページを作成しましたが、問題ありませんでした。次に、ko.applyBindings の周りにタイマーを追加すると、問題が再び発生しました。http://jsfiddle.net/gonglei/9zx7F/12/

4

3 に答える 3

1

これを 2 つの手順で解決しました。

1)入力からラベルをアンラップし、「for」属性でそれらを一緒にフックします

    <input type="checkbox" data-role="checkbox" data-bind="uniqueName: true, uniqueID: true, value: ID />
    <label data-bind="uniqueIDFor: true" >Click me</label>

    ko.bindingHandlers.uniqueIDFor = {
        init: function (element) {
            element.setAttribute("for", "ko_unique_" + ko.bindingHandlers.uniqueName.currentIndex);
        }
    };
    ko.bindingHandlers.uniqueID = {
        init: function (element) {
            element.setAttribute("id", "ko_unique_" + ko.bindingHandlers.uniqueName.currentIndex);
        }
    };

2) jqm に新しいコンテンツを更新するように指示する

    $('input:checkbox').trigger('create');
于 2012-09-27T13:36:24.560 に答える
0

@tredderのソリューションが機能します!attrこれは、 data-bind 属性を使用してラベルをバインドするフィドルのフォークです。

于 2012-12-26T10:29:28.980 に答える
0

このモデルを次のように変更します。

<!-- ko foreach: listItems-->
    <input type="checkbox" name="itemsList" value="name" />
    <span data-bind="text: name"></span>
<!-- /ko -->

考慮すべき主なことは、適切な方法でレンダリングするための入力コントロールの「値」プロパティです。

よろしく。

于 2012-06-05T21:59:06.887 に答える