2017-08-10 97 views
1

我想弄清楚MVC/Durandal/Knockout项目为什么我不能将 ContractsList() = ko.observableArray();绑定到第4级foreach中。 它工作正常,直到3级。嵌套ForEach Knockout 2.2.1不显示达到第四级

这是我试图绑定的Json。

{"Contracts": 
     { 
      "Contract": 
        [ 
         { 
          "NrContract":null, 
          "IdStore":"5", 
          "FlagStatus":"P", 
          "Date":"30/11/2017",       
          "Sale":"3168.23",      
          "DsName":"TEST1",      
          "Items": 
           { 
            "Item": 
            [ 
             {"NrItems":"1","VlTotalItems":"1112.23","DsItems":"3123123"}, 
             {"NrItems":"1","VlTotalItems":"2056","DsItems":"bbb"} 
            ] 
           } 
         }, 
         { 
          "NrContract":null, 
          "IdStore":"5", 
          "FlagStatus":"P", 
          "Date":"30/11/2017",       
          "DsName":"TEST2",      
          "Items": 
           { 
            "Item":[ 
               {"NrItems":"7","VlTotalItems":"7785,61","DsItems":"3123123"}, 
               {"NrItems":"1","VlTotalItems":"3","DsItems":"oi"} 
              ] 
           } 
         } 
        ] 
     } 
    } 

的foreach简化:

<div data-bind='foreach: ContractsList'> 
    <div data-bind='foreach: Contract'> 
     <div data-bind='foreach: Items'>  
      <div data-bind='foreach: Item'> 
       <span data-bind='text: DsItems'></span> 
      </div> 
     </div> 
    </div> 

+2

'Items'是一个对象,而不是一个数组。改用'Items.Item'。 – user3297291

回答

2

这是因为items是一个对象不是一个数组:

"Items": 
    { 
     "Item":[ 
        {"NrItems":"7","VlTotalItems":"7785,61","DsItems":"3123123"}, 
        {"NrItems":"1","VlTotalItems":"3","DsItems":"oi"} 
       ] 
    } 

更新数组,如果它的一个错误,这将工作或

<div data-bind='foreach: Items.Item'> 
    <span data-bind='text: DsItems'></span> 
</div> 
+0

谢谢@Tyler_michell,这是一个错误......并且这两个解决方案都起作用! – Marisco

+0

@Marisco如果解决方案适合您,请将答案标记为已接受,以便我们知道问题已关闭。 –

+0

哎呀..谢谢@Jason我忘了它。 – Marisco