powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Vue.js
4 сообщений из 4, страница 1 из 1
Vue.js
    #39930946
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я новичок в работе с фреймворком Vue.js, я только изучаю его.
Пытаюсь реализовать очень простую идею, но она не работает.
Вот код приложения Vue:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
<!DOCTYPE html>
<html>
<head>
    <script src="https://unpkg.com/vue"></script>
</head>
<body>
    <div id="app">
        <button @click="editItem(0)">Edit item</button>
        <app-edit :item="itemEdt"></app-edit>
    </div>

    <script>
        // editor component
        let appEdit = {
            props: ['item'],
            template: `
            <div>
                <input type="number" v-model="id">  <input type="text" v-model="name">
            </div>
            `,
            data() {
                return {
                    id: this.item.id,
                    name: this.item.name
                }
            },
        }

        // Vue instance
        new Vue({
            el: '#app',
            data: {
                items: [{
                    id: 0,
                    name: 'Some item'
                }],
                itemEdt: {
                    id: null,
                    name: null
                },
            },
            components: {
                'app-edit': appEdit,
            },
            methods: {
                editItem(id) {
                    this.itemEdt = this.items[this.items.findIndex(item => item.id === id)];
                    console.log(this.itemEdt);
                },
            },
        });
    </script>
</body>
</html>



Я ожидаю, что элементы ввода будут заполнены при нажатии на кнопку, но этого не происходит.
Идея в том, что я укажу объект, который связан со свойством item, и входные данные будут заполнены значениями.
В чем ошибка, чего я недопонимаю?
...
Рейтинг: 0 / 0
Vue.js
    #39931137
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL-Talker,

Всё плохо.

Но вот это

Код: javascript
1.
2.
3.
4.
5.
6.
  data() {
                return {
                    id: this.item.id,
                    name: this.item.name
                }
            },



точно лишнее
...
Рейтинг: 0 / 0
Vue.js
    #39931138
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и этот кусок

Код: javascript
1.
2.
3.
<div>
                <input type="number" v-model="item.id">  <input type="text" v-model="item.name">
            </div>
...
Рейтинг: 0 / 0
Vue.js
    #39931244
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

Спасибо так работает.

data - это ошметки из первоначального кода. Я просто максимально сокращал код, перед выкладкой сюда, вырезал лишнее не относящееся к вопросу.

Теперь работающий код вот такой :
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<html>
<head>
    <script src="https://unpkg.com/vue"></script>
</head>
<body>
    <div id="app">
        <button @click="editItem(0)">Edit item</button>
        <app-edit :item="itemEdt"></app-edit>
    </div>

    <script>
        // editor component
        let appEdit = {
            props: ['item'],
            template: `
            <div>
                <input type="number" v-model="item.id"> <input type="text" v-model="item.name">
            </div>
            `,
        };

        // Vue instance
        new Vue({
            el: '#app',
            data: {
                items: [{
                    id: 0,
                    name: 'Zero item'
                }],
                itemEdt: {},
            },
            components: {
                'app-edit': appEdit,
            },
            methods: {
                editItem(id) {
                    this.itemEdt = this.items.find(item => item.id === id);
                },
            },
        });
    </script>
</body>
</html>


Судя по "Все плохо", здесь наверно тоже все не так как должно быть по-хорошему.
Подскажете что тут плохо и как должно быть чтобы было хорошо?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Vue.js
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]