Поскольку сами ключи являются объектами, мы должны получить их длины, например this .
Это больше касается JavaScript в целом, чем Knockout.Чтобы получить значение наблюдаемого нокаута, вы вызываете его как функцию.например: sizeDetails()
.В этом случае он вернет объект, и тогда мы сможем получить индивидуальные размеры и вернуть их в массиве или в любом другом формате.
function getSizeDetails(){
const sizeDetailsObject = self.sizeDetails();
let sizes = [];
for (var key in sizeDetailsObject) {
//check if key exists
if (sizeDetailsObject.hasOwnProperty(key)) {
//since key is sure to be an object, get its length like this:
sizes.push(Object.keys(sizeDetailsObject[key]).length);
}
}
return sizes;
};
Вы также можете создать чисто вычисляемую наблюдаемую , значение которого обновляется автоматически при обновлении sizeDetails
.
self.sizes = ko.pureComputed(function(){
const sizeDetailsObject = self.sizeDetails();
let sizes = [];
for (var key in sizeDetailsObject) {
if (sizeDetailsObject.hasOwnProperty(key)) {
sizes.push(Object.keys(sizeDetailsObject[key]).length);
}
}
return sizes;
}, self);
Теперь вы всегда можете получить последние размеры, позвонив по номеру self.sizes()
.
Чтобы получить их размеры индивидуальноВы можете поступить так, как упоминали Эрик и Биво в своих ответах.