1

このバインド設定が機能しない理由がわかりません。

ID と名前を持つ Page オブジェクトがあり、observable の batchDocumentId と observableArray を持つ pendingBatchDocument があります。私のビューモデルでは、監視可能な配列を PendingBatchDocument で初期化し、それらの PendingBatchDocuments を Pages の配列で初期化しようとしています。

構文でエラーが発生していないので、セットアップは問題ないと思います。正しくない場合はお知らせください。

私の質問は、2 番目の foreach のバインドが機能しないのはなぜですか?

意見

<div data-bind="foreach: pendingDocs">
  <ul class="sortable" data-bind="foreach: pendingDocs().pages()">
  </ul>
</div>

Javascript ビュー モデル

function Page(id, name)
{
  this.id = ko.observable(id);
  this.name = ko.observable(name);
}

var PendingBatchDocument = function(batchDocumentId, pages)
{
  this.batchDocumentId = ko.observable(batchDocumentId);
  this.pages = ko.observableArray(pages);
};

var ViewModel = function()
{
  this.list1 = ko.observableArray([
    { itemId: "C1", name: "Item C-1" }, 
    { itemId: "C2", name: "Item C-2"}, 
    { itemId: "C3", name: "Item C-3"}, 
    { itemId: "C4", name: "Item C-4"}, 
    { itemId: "C5", name: "Item C-5"}, 
    { itemId: "C6", name: "Item C-6"}, 
    { itemId: "C7", name: "Item C-7"}]);

  this.pendingDocs = ko.observableArray([
    new PendingBatchDocument(1, [ 
      new Page(1, "Page 1"), new Page(2, "Page 2"), new Page(3, "Page 3") 
    ])
  ]);
};

ko.applyBindings(new ViewModel());

JSBin http://jsbin.com/ivavew/3/edit

4

1 に答える 1

2

バインディング内のコンテキストforeachは個々の配列要素です。つまり、内部foreach: pendingDocsではすでにインスタンスにアクセスできるため、そのプロパティを直接PendingBatchDocument使用できます。pages

<div data-bind="foreach: pendingDocs">
    <ul class="sortable" data-bind="foreach: pages">
    </ul>
</div>
于 2013-07-02T22:06:01.217 に答える