Я пытаюсь получить доступ к свойству Object в вычисляемом свойстве компонента vue, но получаю сообщение об ошибке, говоря, что свойство не определено. Я настроил прототип здесь . Когда я пытаюсь использовать
playerEntry.stats.RecYards["#text"] > "0"
Vue жалуется
[Vue warn]: Ошибка при рендеринге: «Ошибка типа: playerentry.stats.RecYards не определена»
и, глядя в vue.js devtools в разделе Computed, я вижу playerReceivingStats: "(ошибка при оценке)" вот соответствующий код:
boxscore.js
const boxScoresStats = {
stats: Vue.component("box-scores", {
props: ["props_box_score", "props_gameID"],
data: function() {
return {
playerStats: this.props_box_score.data.gameboxscore.awayTeam.awayPlayers
.playerEntry
};
},
computed: {
playerPassingStats: function() {
return this.playerStats.filter(playerEntry => {
return playerEntry.player.Position === "QB";
});
},
playerReceivingStats: function() {
return this.playerStats.filter(playerEntry => {
console.log(playerEntry.stats.RecYards["#text"]);
return playerEntry.stats.RecYards["#text"] > "0";
});
}
},
Шаблон
<div v-for="playerStats in playerReceivingStats">
<tr class="d-flex">
<td class="col-3 justify-content-center" scope="row">
{{playerStats.player.FirstName}} {{playerStats.player.LastName}} ({{playerStats.player.Position}})
</td>
<td class="col-2 justify-content-center" justify-content="center">
{{ playerStats.stats.Receptions['#text'] }} </td>
<td class="col-3 justify-content-center">{{playerStats.stats.RecYards['#text']}}</td>
<td class="col-2 justify-content-center">{{playerStats.stats.RecTD['#text']}}</td>
<td class="col-2 justify-content-center">{{playerStats.stats.Targets['#text']}}</td>
</tr>
</div>
Я пробовал использовать скобки и точечные обозначения, но все равно ничего не получилось. Я вижу значения из console.log распечатки в порядке. Но я в недоумении, почему он говорит неопределенный, когда я могу видеть свойство объекта в devtools. Также обратите внимание, что если я укоротил вычисляемое значение до playerEntry.stats.RecYards Я не получил ошибку? Но тогда я получаю неверные результаты. Любая помощь приветствуется.
Обновлено:
Вот вычисленное свойство, которое работает:
playerReceivingStats: function() {
return this.offensivePlayers.filter(playerEntry => {
if (typeof playerEntry.stats.RecYards != "undefined") {
return playerEntry.stats.RecYards["#text"] > "0";
}
});
}
}
Спасибо за ввод. Любопытно, хотя почему понизить? Может ли человек уточнить, кто это сделал. спасибо ...