我正在尝试将 KnockoutJS 与 jQuery mobile 一起使用,但遇到了数据绑定集中的单选按钮没有样式的问题。
这是一个小提琴
我有一个看起来像这样的简单模型:
var vm = {
options: ["option1","option2","option3"]
}
$(function() {
ko.applyBindings(vm);
});
我尝试像这样绑定它:
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-bind="foreach: options">
<input type="radio" name="selectModel" data-bind="attr: { id: $data}, value: $data" />
<label data-bind="attr: {for: $data}, text: $data"></label>
</fieldset>
</div>
通过检查 DOM,我可以看到 KnockoutJS 已正确地将我的集合转换为(大致)这个(为了清楚起见删除了数据绑定):
<fieldset data-role="controlgroup">
<input id="option1" type="radio" name="selectStaticModel" value="option1">
<label for="option1">option1</label>
<input id="option2" type="radio" name="selectStaticModel" value="option2">
<label for="option2">option2</label>
<input id="option3" type="radio" name="selectStaticModel" value="option3">
<label for="option3">option3</label>
</fieldset>
如果我将其静态放入我的 HTML 中,它会被 jQuery Mobile 正确设置样式。
知道这里可能会发生什么吗?在同一个项目的其他地方,我有一个显示在列表视图中的集合,并且样式很好。
到目前为止,我只在 FF 中测试过这个。
更新
搜索一下,我发现了一些旧信息,这些信息建议将其应用于.checkboxradio()
元素以手动设置样式。我在这里做了
$(function() {
ko.applyBindings(vm);
$(".boundRadio").checkboxradio();
});
这对一些人有帮助,但它们不像静态定义的按钮那样分组。每个都有单独的圆角,而不是仅圆角第一个项目的顶角和最后一个项目的底角。