0

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

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

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

4

3 回答 3

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');
于 2012-09-27T13:36:24.560 回答
0

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

于 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 回答