knockoutjs jquery移动复选框列表问题:无法检查

时间:2012-05-16 22:21:26

标签: jquery-mobile knockout.js

使用knockoutjs和jquery mobile,我需要从数组中创建一个复选框列表。似乎复选框列表已呈现,但它没有响应click。 http://jsfiddle.net/9zx7F/

我使用了一个带有控制组数据角色的fieldset标签来构建列表。我也用listview尝试过ul,同样的问题。

编辑:进一步的细节 - 我发现它似乎与ko.applyBindings的时间有关。我创建了一个在我的localhost上运行相同代码的页面,没关系。然后在ko.applyBindings周围添加了一个计时器,问题再次发生。 http://jsfiddle.net/gonglei/9zx7F/12/

3 个答案:

答案 0 :(得分:1)

我用两步解决了这个问题;

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');

答案 1 :(得分:0)

我会改变这个模型:

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

要考虑的主要事情是输入控件中的“value”属性以正确的方式呈现。

的问候。

答案 2 :(得分:0)

@ tredder的解决方案有效!这是你的小提琴的一个分支,使用attr数据绑定属性来绑定标签,这对我看起来更干净:http://jsfiddle.net/aib42/AnKR6/