2016-08-30 8 views
0

Knockoutで文字列の連結配列をデータバインドするにはどうすればよいですか?私はこのような何かをしたい:ノックアウトデータバインドされた文字列の連結

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

構文が間違っているが、それは一人一人のために複数のスパンを作成することなく、上記のような何かをすることは可能でしょうか?

+0

をobservableArrayをオーバーライドし、文字列を一緒に連結します。しかし、一般的に言えば、配列を観察する計算を持つビジネスに着手すると、中規模から大規模のデータセットでパフォーマンスの問題が発生します。 なぜあなたはこれをやりたいのですか? HTMLテンプレートの唯一の場所は、人よりもforeach'ingですか? –

答えて

5

データバインドでは、あらゆる種類の有効なjavascriptを使用できます。

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> 

オプションこのようなモデルを想定しSee fiddle

-

オプション1:そうだと思うが、このような何かを行うことが可能です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>