Это не то, как скобочная запись работает в JavaScript ...
Предполагая, что ACTION_TYPE_UNREAD_AUTHOR_COMMENTS
равно author-comment
, actionsRequired[ACTION_TYPE_UNREAD_AUTHOR_COMMENTS]
даст этот массив:
[
{ "id": 19, "article_reference_id": 1831, "user_id": 25493, "role_id": 65536, "text": "This is comment number 7" },
{ "id": 20, "article_reference_id": 3062, "user_id": 2, "role_id": 65536, "text": "This is comment number 8" },
{ "id": 30, "article_reference_id": 12889, "user_id": 25493, "role_id": 65536, "text": "fgdfgfgergfsgsfsdfsdfsdf" },
]
Далее, если reference.article_reference_id
были 1831
, результат будет:
actionsRequired[ACTION_TYPE_UNREAD_AUTHOR_COMMENTS][1831] === undefined
Это undefined
, поскольку в указанном выше массиве нет ключа свойства с таким именем.Допустимыми ключами для этого массива являются 0
, 1
и 2
(соответствующие индексам).
Возможно, в конечном итоге этот код предназначен для определения наличия непрочитанных комментариев.Если это так, вы должны вместо этого проверить, не является ли массив author-comment
непустым:
<span class="author-comments"
v-if="actionsRequired[ACTION_TYPE_UNREAD_AUTHOR_COMMENTS].length">
ОБНОВЛЕНИЕ:
Однако, он отображает значокдля каждого непрочитанного комментария есть.
Значок комментария отображается для каждого непрочитанного комментария, поскольку <i class="fa-comment">
существует в в обоих v-if
и v-else
блоках, эффективно создаваябезусловный значок:
<span v-if="...">
<i class="fas fa-comment"></i>
</span>
<span v-else>
<i class="saved fas fa-comment"></i>
</span>