2016-08-30 36 views
0

我將如何在Knockout中串聯數組字符串?我想要做這樣的事情:敲除數據綁定字符串連接數組

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

明顯的語法是錯誤的,但它可以做一些像上面沒有爲每個人創建多個跨度?

+0

您可以隨時使用一個計算該循環在observableArray上並連接一個字符串。但是,一般來說,當您開始進行計算觀察數組的業務時,您開始遇到大中型數據集的性能問題。 你能分享一下你爲什麼要這樣做嗎?是在你的foreach'ing人的HTML模板中唯一的地方? –

回答

5

你可以在data-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>