Свойство или метод не определены в vue

#laravel #vue.js

#laravel #vue.js

Вопрос:

Я получаю эту ошибку

Свойство или метод «test» не определены в экземпляре, но на них ссылаются во время визуализации.

Я не уверен, почему я это понимаю. Насколько я знаю, я test правильно вызываю.

Вот мой код

Мой контроллер

     $test = [
        'test' => 'test'
    ]

    return view('index', ['test' => $test]);
  

Мой блейд-файл

     @section('content')
        <div id="index">
            <index :test="test"></index>
        </div>
    @endsection
  

Мой index.js

     Vue.component('index', require('./components/Index').default);
    
    if (document.getElementById('index') != null) {
        const app = new Vue({
            el: '#index'
        });
    }
  

и вот мой Index.vue

     <template>
        <div>
            My vue template
        </div>
    </template>

    <script>
        export default {
            props: ['test'],
            data() {
                return {

                }
            },
            methods: {

            },
            mounted() {

            },
        }
    </script>
  

Возможно, я забыл что-то добавить, но я не уверен

Комментарии:

1. вам нужно передать props и, как это, вы не можете

2. @KamleshPaul — но разве я не делаю это уже в моем файле блейда и моем Index.vue?

3. <index test="test"></index> попробуйте это

4. Я получаю Trying to get property 'test' of non-object сообщение об ошибке

Ответ №1:

Измените файл блейда на:

 @section('content')
        <div id="index">
            <index test="{{ $test['test'] }}"></index>
        </div>
@endsection
  

Комментарии:

1. Когда я это сделал, я получил эту ошибку htmlspecialchars() expects parameter 1 to be string, array given , и когда я изменил {{ }} значение на be {!! !!} , я получил array to string converstion ошибку

2. Вот почему вы должны отправлять элемент массива $test->test , а не полный массив

3. Когда я это сделал, я получил эту ошибку Trying to get property 'test' of non-object

4. Ах, извините, обновил мой ответ, $test['test'] это способ получить к нему доступ