2

私はこれに一日中苦労していて、何が欠けているのかわかりません。Knockoutを使用して作成された作業グリッドがあります。マッピングプラグインを使用するようにグリッドを変換しようとしていますが、ページングが壊れます。マッピングプラグインでslice関数を使用して、配列のサブセットを返すにはどうすればよいですか?私は何が欠けていますか?

var grid = {};
grid.Model = function (jsondata) {
 var viewModel = {
  items: ko.observableArray()
 };

 $.getJSON('/api/test/items', function (data) {
  viewModel.items= ko.mapping.fromJS(data);
  ko.applyBindings(viewModel)
 });

 viewModel.itemsOnCurrentPage = ko.computed(function () {
  return viewModel.items.slice(1, 10);
 }, viewModel);    
};

itemsOnCurrentPage(foreach:itemsonCurrentPage)にバインドしようとしています。アイテムに直接バインドすると正常に機能します。これは、クライアント側でアレイを手動で構築しているときに機能しました。現在、jQueryを介してデータを取得し、マッピングプラグインを使用しています。何が欠けているのかわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

4

あなたの問題は、itemsOnCurrentPage計算されたオブザーバブルが元のobservableArrayにバインドされていることです。を行うと、新しい observableArray (バインドされていないもの) に等しくviewModel.items = ko.mapping.fromJS(data)設定されます。viewModel.itemsitemsOnCurrentPage

代わりにko.mapping.fromJS(data, {}, viewModel.items)、既存の observableArray を更新することができます。

于 2012-02-29T02:00:16.057 に答える
2

RPは正しいです。

これは、あなたが何をしているかを示す JSFiddle です。

http://jsfiddle.net/jearles/P99zy/

動作するアップデートは次のとおりです。

http://jsfiddle.net/jearles/P99zy/2/

唯一の違いは、テーブル項目をロードする方法です。

于 2012-02-29T02:38:49.143 に答える