将JS对象存储在radiobutton中的value属性中?

时间:2016-03-10 00:51:18

标签: html knockout.js

将无效的HTML / HTML5存储在radiobutton的value属性中是否存在JS对象(未进行字符串化)?

举个例子,我使用Knockout JS将radiobutton的值设置为JS对象,如下所示:

HTML:

<!-- ko foreach: $data.vehicles-->
<input type="radio" data-bind="value: $data, checked: $parent.selVehicle" />
<!-- /ko -->

使用Javascript:

function ViewModel() {
  this.selVehicle = ko.observable();

  this.vehicles = ko.observableArray([new Vehicle('Toyota'), new Vehicle('Honda')]);
}

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

ko.applyBindings(new ViewModel());

当你运行它时,radiobutton的值将是&#34; [Object object]&#34;如果你用控制台检查它。

1 个答案:

答案 0 :(得分:0)

它不是关于它是否是有效的Html / Html5属性值,当使用Knockout时,在数据绑定中使用对象是正常的。因此,在您的单选按钮值中绑定到Vehicle功能,如果您想使用selVehicle().name()获取车辆名称,请参阅foreach绑定中的documentation

<强> HTML

<!-- ko foreach: vehicles-->
<input type="radio" data-bind="value: $data, checked: $parent.selectedVehicle" />
<!-- /ko -->
<p data-bind="text: selectedVehicle().name">

</p>

<强>的JavaScript

function ViewModel() {
  this.selectedVehicle = ko.observable();

  this.vehicles = ko.observableArray([new Vehicle('Toyota'), new Vehicle('Honda')]);
}

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

ko.applyBindings(new ViewModel());

Here's jsfiddle尝试一下。