在attr绑定中绑定对象-KnockoutJs

时间:2018-11-20 10:19:23

标签: javascript knockout.js

有一个要求,我需要在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和名称的整个对象,让我知道我该怎么做?

1 个答案:

答案 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 });