有一个要求,我需要在value属性中绑定对象,因为KnockoutJs在复选框事件中将值作为第一个参数发送。 当作为单个值传递时,一切都很好。
<div data-bind="foreach: Items">
<input type="checkbox" value data-bind="attr: { value: id }, checked: selectedVal">
this.selectedVal.subscribe((newVal: any) => {
alert(newVal);
});
我想传递迭代项对象本身,而不是传递迭代项的一个属性。
Items = [
{
id: 1,
name: 'Adam',
},
{
id: 2,
name: 'Bailey',
},
{
id: 3,
name: 'Cathy',
},
]
在订阅时,我想要带有ID和名称的整个对象,让我知道我该怎么做?
答案 0 :(得分:1)
您可以使用package ser_deser_test;
import java.io.IOException;
import java.util.Arrays;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class TestSerDeser {
public static void main(String[] args) {
Elements elements = new Elements(Arrays.asList("a", "b", "c"));
Box box = new Box(elements);
ObjectMapper om = new ObjectMapper();
om.enable(SerializationFeature.INDENT_OUTPUT);
try {
// Serialize
String s = om.writeValueAsString(box);
// Deserialize
Box box2 = om.readValue(s, Box.class);
boolean dummy = false;
} catch (JsonProcessingException e2) {
e2.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
告诉该复选框写入整个对象。例如:
checkedValue: $data
const items = [
{
id: 1,
name: 'Adam',
},
{
id: 2,
name: 'Bailey',
},
{
id: 3,
name: 'Cathy',
},
];
const selected = ko.observableArray([]);
selected.subscribe(console.log);
ko.applyBindings({ items, selected });