【问题标题】:Binding checked for radio input using knockout mapping library使用敲除映射库检查无线电输入的绑定
【发布时间】:2013-06-11 04:26:56
【问题描述】:

非常简单的data-bind="checked: someBool" 不会检查我的无线电输入。

<input type="radio" data-bind="checked: someBool" />radio

ko 密码...

var data = { someBool: true };
var vm = ko.mapping.fromJS(data);
ko.applyBindings(vm);

收音机未选中。我错过了什么吗?

直播:http://jsbin.com/exokav/4/edit

【问题讨论】:

标签: knockout.js knockout-mapping-plugin


【解决方案1】:

您需要为要映射到的单选按钮添加一个值属性。此外,该值不会是布尔值,而是在此之后的字符串。我使用以下扩展来为单选按钮使用布尔值。 (直播:http://jsbin.com/exokav/8):

ko.bindingHandlers.checkedAsBool = {
    init: function (element, valueAccessor, allBindingsAccessor) {
        var observable = valueAccessor(),
            interceptor = ko.computed({
                read: function () {
                    var val = ko.utils.unwrapObservable(observable);
                    return ((val !== null) && (typeof val !== "undefined") ? val.toString() : val);
                },
                write: function (newValue) {
                    observable(newValue === "true");
                },
                owner: this
            });
        ko.applyBindingsToNode(element, { checked: interceptor });
    }
};

基于 RP Niemeyer 的this 回答。

【讨论】:

  • 离题:;-)如果你喜欢这个答案,也许你也可以在这里标记一个正确的答案:stackoverflow.com/q/9475893/932282
  • 大声笑你是对的@mhu。完成并完成。回到这篇文章,我会把这个答案标记为正确的答案,尽管这很糟糕,因为淘汰赛的网站让它看起来很容易:/ i.imgur.com/U0qah8P.png screenshot,此处链接到全文:knockoutjs.com/documentation/checked-binding.html
  • 谢谢,现在我是大师了 ;-)。是的,但该示例还使用复选框来表示布尔值。
猜你喜欢
  • 1970-01-01
  • 2013-06-01
  • 2014-01-21
  • 2013-03-03
  • 1970-01-01
  • 2021-09-23
  • 2013-08-16
  • 2015-06-05
  • 2023-03-29
相关资源
最近更新 更多