サーバーから、次のようなオブジェクトを受け取ります。
var fromServer = {
foo: "Some foo",
barArray: [ "bar1", "bar2", "bar3", "bar4", "bar5" ]
};
ノックアウト用のマッピングプラグインを使用して、ビューモデルの構築方法をカスタマイズし、配列を長さ2のサブ配列に分割したいと思います。
viewModel: {
foo: "Some foo",
barArray: [ ["bar1", "bar2"], ["bar3", "bar4"], ["bar5"] ]
}
そこに行く途中で、create
コールバックが配列アイテムごとに1回呼び出されることに気付きました。これが私の見解です:
<h1 data-bind="text: foo"></h1>
<ul data-bind="foreach: barArray">
<li data-bind="text: $data.name"></li>
</ul>
そしてjavascript:
var fromServer = { foo: "Some foo", barArray: [ "bar1", "bar2", "bar3", "bar4", "bar5" ] };
var mapping = {
'barArray': {
create: function(options) {
return new barModel("This is " + options.data);
}
}
};
var barModel = function(data) {
this.name = data;
};
var viewModel = ko.mapping.fromJS(fromServer, mapping);
ko.applyBindings(viewModel);
本当の質問は次のとおりです。create
コールバックを使用して、各要素ではなく、配列全体に一度に1つずつアクセスできますか?または、私はこれに間違った方法でアプローチしていますか?