删除数据绑定一个串接的字符串数组

Knockout data binding a concatenated array of strings

本文关键字:字符串 数组 一个 数据绑定 删除      更新时间:2023-09-26

我如何在Knockout中绑定字符串的连接数组?我想这样做:

<span data-bind='text: foreach person in persons person.name+","+person.age>

显然语法是错误的,但是否有可能在不为每个人创建多个跨度的情况下做类似上述的事情?

你可以在data-bind中使用任何有效的javascript。所以我认为可以这样做:

选项1 -参见fiddle

假设模型如下:

var model = {
  people : ko.observableArray([
    {name: "Name1", age: 30},
    {name: "Name2", age: 31},
    {name: "Name3", age: 32},
  ])
}
ko.applyBindings(model);

我们可以做:

<span data-bind='text: people().map(function(p){return p.name + "," + p.age}).join(", ")'> </span>

选项2 -参见fiddle

但是嵌入复杂的内联javascript并不是一个好的做法,我建议创建一个像这样的计算属性

var model = {
  people : ko.observableArray([
    {name: "Name1", age: 30},
    {name: "Name2", age: 31},
    {name: "Name3", age: 32},
  ]),
}
model.allPeople = ko.computed(function() {
    return model.people().map(function(p){return p.name + "," + p.age}).join(", ");
});
ko.applyBindings(model);

和HTML:

<span data-bind='text: allPeople'> </span>