2016-07-30 92 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