javascript - knockout 数据绑定(bind)字符串串联数组

标签 javascript arrays knockout.js

如何在 Knockout 中对串联的字符串数组进行数据绑定(bind)?我想做这样的事情:

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

显然语法是错误的,但是是否可以在不为每个人创建多个跨度的情况下执行类似上述的操作?

最佳答案

您可以在数据绑定(bind)中使用任何类型的有效 JavaScript。所以认为可以做这样的事情:

选项 1 - See 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 - See fiddle

但是嵌入 coplex 内联 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>

关于javascript - knockout 数据绑定(bind)字符串串联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39217739/

相关文章:

javascript - 在 ReactJS 中,在迭代非浅层数据结构时如何最好地组织我的代码

java - 如何调用从 JNI 返回数组的 C++ 方法并将数组的内容转换为 java 类数组?

javascript - 在 Knockout.js 中删除数据后刷新 ViewModel

javascript - 在某些情况下忽略 foreach afterAdd 和 beforeRemove

javascript - 如何使用 Knockout JS 或其他方式将选择框的选定文本绑定(bind)到对象的属性?

javascript - 从 ng-repeat 更改元素的样式

javascript - 切换具有相同类名的 click() ?

c++ - 在结构中分配数组字段

javascript - 在生产环境中调试 Uglified javascript

javascript - UIWebView scrollTo 应该表现流畅