2016-07-30 93 views
1

這裏是情況。我有兩個表:每個foreach中的foreach,兩張表,Knockout.js

MSSQL

產品

ProductId | ProductName 
__________|____________ 
     1 | iPhone5 
     2 | iPhone6 
     3 | iPhone6s 

圖片

Id | ImagePath  | ProductId 
___|__________________|___________ 
1 | /images/231.jpg | 2 
2 | /images/432.jpg | 2 
3 | /images/111.jpg | 1 

我的淘汰賽:

<div data-bind="foreach: Products"> 
    <div data-bind="text: ProductName"> 
     <div data-bind="foreach: Images> 
     <img data-bind="attr:{src: ImagePath}" /> 
     </div> 
    </div>   
</div> 

所以我想要得到每個產品的所有圖像。我應該將兩個表合併成一個Json,以及如何從外部循環獲取id?謝謝!

p.s.如果有幫助,我使用asp.net。

回答

1

您可以嘗試如下所示。基於以下片段,我想products將從ajax調用提供。這就是說你必須相應地改變這部分。從本質上講,你Ajax調用會返回的將是一個產品陣列,每個產品至少應該有一個名稱和一個圖像數組(如果這個產品沒有圖像存在的話,它是一個空數組)。顯然,你可以添加你想要的任何其他信息給你的回覆。所以你必須調整一下已經聲明的功能,ImageProduct

var Image = function(name){ 
 
    this.name = name; 
 
}; 
 

 
var Product = function(name, images){ 
 
    this.name = name; 
 
    this.images = images; 
 
}; 
 

 
var viewModel = { 
 
    products: [ 
 
    new Product("iPhone5", [new Image("/images/111.jpg")]), 
 
    new Product("iPhone6", [new Image("/images/231.jpg"),new Image("/images/432.jpg")]), 
 
    new Product("iPhone6s", [new Image("/images/444.jpg")]) 
 
    ] 
 
}; 
 

 
ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 

 
<div data-bind="foreach: products"> 
 
    <div data-bind="text: name"> </div> 
 
     <ul data-bind="foreach: images"> 
 
     <li data-bind="text: name"></li> 
 
     </ul> 
 
</div>

+0

太好了!我正在尋找。謝謝。 –

+0

@IgorLevashov歡迎您!我很高興我幫助:) – Christos

1

您可以使用$parent訪問一個範圍級別。因此,從內部循環開始,您可以使用父級訪問正在循環的當前項目。Products