3

WebAPIからJsonデータを取得しています。データの形式は次のとおりです。

[{"CustomerID":1,"CustomerName":"John"},{"CustomerID":2,"CustomerName":"Sally"}]

実際のデータは当然より複雑ですが、{"customers":[...]}のように、「名前」を持たないアイテムの配列の形式になっています。渡されるデータを変更することはできないので、これは私が生きなければならないものです。

マッピングプラグインを使用してこのデータにノックアウトモデルを作成し、それをビューに結び付けたいと思います。

var vmCustomers = ko.mapping.fromJS(jsonObject);
ko.applyBindings(vmPartners);

今の私の問題は、HTMLページのデータにアクセスする方法がわからないことです。vmCustomersを調べて、_latestValueにドリルダウンすると、データがモデルにロードされていることがわかります。

HTMLでできるようにしたいのは、それに対応することです。

foreach: customers

ノックアウトモデルを手動で構築し、.mappingを使用して入力する(または手動で入力する)ことで機能させることができますが、それは避けたいと思います。私が探しているのは、HTMLコードからノックアウトモデルの最上位配列を取得する方法です。

私はノックアウトに非常に慣れていないので、私が見逃している根本的な何かがあるかもしれません。

4

1 に答える 1

3

KOと戦わないでください。データを保持するプロパティがある適切なビューモデルを作成するだけですcustomers。これがKOの方法です。とにかく、ビューモデルは、将来、追加のロジック/データを配置する場所があるときに便利です。

var viewModel = { customers: ko.mapping.fromJS(jsonObject); }
ko.applyBindings(viewModel);

その後、あなたはあなたの見解を持つことができますdata-bind="foreach: customers"

ただし、ビューモデルが必要なく、配列にバインドする場合は、「customers」のような名前でアクセスできない場合は、現在のコンテキスト$dataで参照する必要があります。プロパティを使用して:

data-bind="foreach: $data"

JS

var vmCustomers = ko.mapping.fromJS(jsonObject);
ko.applyBindings(vmCustomers);

デモJSFiddle

于 2013-02-23T20:24:26.987 に答える