代码之家  ›  专栏  ›  技术社区  ›  Uzair Khan

在attr绑定中绑定对象-knockoutjs

  •  0
  • Uzair Khan  · 技术社区  · 6 年前

    有一个要求,在这里我需要在value属性中绑定对象,因为knockoutjs将value作为checkbox事件中的第一个参数发送。 当作为单个值传递时,一切都很好。

    <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 回复  |  直到 6 年前
        1
  •  1
  •   user3297291    6 年前

    你可以使用 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 });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
    <div data-bind="foreach: items">
      <label>
       <input type="checkbox" data-bind="checkedValue: $data, checked: selected">
       <span data-bind="text: name"></span>
      </label> 
    </div>