【问题标题】:Can a Knockout observable be data bound to the value of a radio button?Knockout observable 可以数据绑定到单选按钮的值吗?
【发布时间】:2012-04-20 02:42:52
【问题描述】:

是否可以使用值绑定将 Knockout 可观察属性绑定到单选按钮?

这是我想要做的,但值最终是字符串“[Object object]”而不是我的可观察属性的实际实例:

<input type="radio" name="vehicleGroup" data-bind="checked: vehicleGroupViewModel().selectedGroupOption , value:vehicleGroupViewModel().car" />

<input type="radio" name="vehicleGroup" data-bind="checked: vehicleGroupViewModel().selectedGroupOption , value:vehicleGroupViewModel().truck" />

这是我正在使用的视图模型:

var VehicleGroupViewModel = function(){
    var self = this;
    this.selectedVehicleGroup = ko.observable();
    this.selectedGroupOption = ko.observable();
    this.selectedGroupOption.subscribe(function (newVal) {
        self.selectedVehicleGroup(newVal);
    }
    this.selectedGroup = ko.observable();
    this.car = ko.observable(new VehicleViewModel());
    this.truck = ko.observable(new VehicleViewModel());
}

var VehicleViewModel = function(){
    this.name = ko.observable();
}

所以最后我希望 Car 或 Truck VehicleViewModel 在 selectedVehicleGroup observable 中。

【问题讨论】:

    标签: javascript data-binding radio-button knockout.js


    【解决方案1】:

    如文档所述here 只有 Select 节点能够将任意 JavaScript 对象绑定到一个值。其他输入需要一个字符串值,这就是您的值返回“[Object object]”的原因。

    你仍然可以做你想做的事,但你必须手动映射一个键并自己找到合适的对象。这是一个演示的小提琴:

    http://jsfiddle.net/jearles/JcPXy/

    【讨论】:

      【解决方案2】:

      仅供其他读者接受接受的答案,KO v3 添加了 checkedValue 绑定,现在使这成为可能。

      【讨论】:

        【解决方案3】:

        我也需要这个。我的解决方案类似于 John Earles,只是我使用了 computed 而不是 subscribe

        self.selectedVehicleGroup = ko.computed(function(){
            return ko.utils.arrayFirst(self.availableGroups(), function (group) { return group.name() == self.selectedGroupOption(); });
        });
        

        http://jsfiddle.net/JcPXy/91/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-02-29
          • 2012-04-25
          • 2015-11-06
          • 2013-10-27
          • 2013-05-01
          • 1970-01-01
          • 2016-01-18
          • 2015-04-05
          相关资源
          最近更新 更多