获取循环中项目的索引以在 if 语句中使用以获取另一个对象中的值
Get index of item in a loop to be used in if statement to get value in another object
我试图在循环中使用当前项目的索引从父对象中获取一个值,如果我直接将数字放入,我只能获取数据。但是,我需要改为使用索引。
因此父对象包含图书馆、图书和图书价格
<!-- ko foreach: value().Library -->
<ul>
<li>
<div>
<h3 data-bind="text: Name + ' - ' + Description"></h3>
</div>
<!-- ko if: $parent.value().BookPrices.length > 0 -->
<div>
<span data-bind="text: $parent.value().BookPrices[1].Dollars"></span>
</div>
<!-- /ko -->
</li>
</ul>
<!-- /ko -->
任何 ideas/suggestions 我如何使用循环中当前项目的索引甚至 ID 属性来使用 [ ] 获取值 Dollars 将不胜感激.
是这样的吗?
function ViewModel() {
var self = this;
self.value = ko.observable({
Library: [{
Id: 1,
Name: 'Test 1',
Description: 'Test 1 Description'
},
{
Id: 2,
Name: 'Test 2',
Description: 'Test 2 Description'
},
{
Id: 3,
Name: 'Test 3',
Description: 'Test 3 Description'
}
],
BookPrices: [{
Id: 1,
Dollars: 5.99
}, {
Id: 2,
Dollars: 9.99
}, {
Id: 3,
Dollars: 15.99
}]
})
self.getBookPrice = function(item){
var result = self.value().BookPrices.filter(x=>x.Id == item.Id);
return result.length === 0 ? 0.00 : result[0].Dollars;
}
}
ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<!-- ko foreach: value().Library -->
<ul>
<li>
<div>
<h3 data-bind="text: Name + ' - ' + Description"></h3>
</div>
<!-- ko if: $parent.value().BookPrices.length > 0 -->
<div>
<span data-bind="text: $parent.getBookPrice($data)"></span>
</div>
<!-- /ko -->
</li>
</ul>
<!-- /ko -->
我试图在循环中使用当前项目的索引从父对象中获取一个值,如果我直接将数字放入,我只能获取数据。但是,我需要改为使用索引。
因此父对象包含图书馆、图书和图书价格
<!-- ko foreach: value().Library -->
<ul>
<li>
<div>
<h3 data-bind="text: Name + ' - ' + Description"></h3>
</div>
<!-- ko if: $parent.value().BookPrices.length > 0 -->
<div>
<span data-bind="text: $parent.value().BookPrices[1].Dollars"></span>
</div>
<!-- /ko -->
</li>
</ul>
<!-- /ko -->
任何 ideas/suggestions 我如何使用循环中当前项目的索引甚至 ID 属性来使用 [ ] 获取值 Dollars 将不胜感激.
是这样的吗?
function ViewModel() {
var self = this;
self.value = ko.observable({
Library: [{
Id: 1,
Name: 'Test 1',
Description: 'Test 1 Description'
},
{
Id: 2,
Name: 'Test 2',
Description: 'Test 2 Description'
},
{
Id: 3,
Name: 'Test 3',
Description: 'Test 3 Description'
}
],
BookPrices: [{
Id: 1,
Dollars: 5.99
}, {
Id: 2,
Dollars: 9.99
}, {
Id: 3,
Dollars: 15.99
}]
})
self.getBookPrice = function(item){
var result = self.value().BookPrices.filter(x=>x.Id == item.Id);
return result.length === 0 ? 0.00 : result[0].Dollars;
}
}
ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<!-- ko foreach: value().Library -->
<ul>
<li>
<div>
<h3 data-bind="text: Name + ' - ' + Description"></h3>
</div>
<!-- ko if: $parent.value().BookPrices.length > 0 -->
<div>
<span data-bind="text: $parent.getBookPrice($data)"></span>
</div>
<!-- /ko -->
</li>
</ul>
<!-- /ko -->