vue не может получить доступ к объекту реквизита - PullRequest
0 голосов
/ 22 января 2020

я делаю метод find в массиве для поиска объекта. Я возвращаю объект, но не могу получить доступ к реквизиту этого объекта. Метатель ошибок nuxt говорит следующее:

Невозможно прочитать свойство 'значение' из неопределенного

мой код:

<v-data-table :headers="datatable.headers" :items="datatable.items" class="elevation-1">
    <template v-slot:body="{ items }">
        <tr v-show="inMenu.find(menuItem => menuItem.name == item.name.toLowerCase()).value == true" v-for="(item, index) in items" :key="index">
            <td>{{item.name}}</td>
            <!-- problem is in the <v-text-field> v-model -->
            <td><v-text-field v-model="settings.adminIcons.find(menuItem => menuItem.key == item.name.toLowerCase()).value" label="icon"></v-text-field></td>
        </tr>
    </template>
</v-data-table>

странная вещь , что если я сделаю это:

<!-- works -->
<v-text-field v-model="settings.adminIcons.find(menuItem => menuItem.key == 'evenementen').value" label="icon">

вместо этого:

<!-- does not work -->
<!-- item.name.toLowerCase() == 'evenementen' -->
<v-text-field v-model="settings.adminIcons.find(menuItem => menuItem.key == item.name.toLowerCase()).value" label="icon">

это не будет работать. но item.name.toLowerCase() - это то же самое, что 'evenementen'.

любое решение?

Ответы [ 2 ]

0 голосов
/ 22 января 2020

По сути, вы получаете доступ к значению элемента, если элемент недоступен в вашей модели данных.

Этот код выдаст вам строку, и именно здесь произошла ваша ошибка

menuItem.key == item.name.toLowerCase()) // if item.name = 'Test' will become 'test'.

Теперь, возвращаемая ошибка - это не тот элемент, к которому вы обращаетесь в вашем l oop первоначально, скорее, даст вам результат, но в новых данных. Вот почему, когда вы обращаетесь к его значению, он говорит, что не может прочитать значение свойства undefined.

0 голосов
/ 22 января 2020

Выдает ошибку, потому что в find не находит ни одного элемента, о котором его возврат отмечает, и вы пытаетесь получить доступ к .value.

// Error


//console.log(settings['adminIcons'].find(menuItem => menuItem.key == "env1").value)

<script>
const array1 = [5, 12, 8, 130, 44];

const settings = {
	'adminIcons':[
      {"key":"env",
        "value":"value1"}
     ]
}
const found = array1.find(element => element > 10);

console.log(settings['adminIcons'].find(menuItem => menuItem.key == "env").value);


// Error


//console.log(settings['adminIcons'].find(menuItem => menuItem.key == "env1").value);
</script>
...