1

我正在玩 Knockout.js 并创建了这个简单的示例:http: //jsfiddle.net/JcTxT/30/

<div id="term_grp" data-role="fieldcontain"><a>Semester:</a>

<fieldset id="term_fields" data-role="controlgroup" data-type="horizontal">
    <input type="radio" name="term" id="ss" value="ss" data-bind="checked: term" />
    <label for="ss">Sommersemester</label>
    <input type="radio" name="term" id="ws" value="ws" data-bind="checked: term" />
    <label for="ws">Wintersemester</label>
</fieldset>
Term is <span data-bind="text: pommes"></span>

var aResult = {
    term: ko.observable("ss"),
    pommes: "TEST"
};

$(document).on('pagebeforeshow', '#mainPage', function () {
    ko.applyBindings(aResult);
});

我希望选中其中一个单选按钮(值为“ss”的单选按钮,但事实并非如此。有谁知道,为什么?

干杯

4

2 回答 2

5

如果您使用它,它可以工作: $(function () { ko.applyBindings(aResult); }); 并关闭 jquery mobile。

我试过你的jsfiddle。

如果您需要 jquery mobile,此链接有效: http: //www.codesizzle.com/jquery-mobile-radio-with-knockout-js/

于 2013-03-26T13:09:55.193 回答
2

好的,需要做什么?

添加另一个事件处理程序并将其添加到绑定中:

var aResult = {
    term: ko.observable("ws"),
    pommes: "TEST2"
};

ko.bindingHandlers.mobileradio = {
    init: function (element, valueAccessor) {},
    update: function (element, valueAccessor) {
        var value = valueAccessor();
        var valueUnwrapped = ko.utils.unwrapObservable(value);
        if (valueUnwrapped == $(element).val()) {
            $(element).prop("checked", "true").checkboxradio("refresh");
        } else {
            $(element).removeProp("checked").checkboxradio("refresh");
        }
    }
};

$(function () {
    ko.applyBindings(aResult);
});

工作小提琴:http: //jsfiddle.net/JcTxT/35/

于 2013-03-26T13:29:25.610 回答