повторно используемый код vuejs2 на N вкладках

#duplicates #vue.js #vue-component #vuejs2

#дубликаты #vue.js #vue-компонент #vuejs2

Вопрос:

У меня есть 5 вкладок с одними и теми же данными пользователя. На каждой вкладке есть входные данные для поиска по термину. Как можно повторно использовать код для выборки пользователей и поиска их на открытой вкладке. Код находится в этом JSFiddle:

 var listing = Vue.extend({
    data: function () {
        return {
            query: '',
            list: [],
            user: '',
        }
    },
    computed: {
        computedList: function () {
            var vm = this;
            return this.list.filter(function (item) {
                return item.toLowerCase().indexOf(vm.query.toLowerCase()) !== -1
            })
        }
    },
    created: function () {
        this.loadItems();
    },
    methods: {
        loadItems: function () {
            this.list = ['mike','bill','tony'],
        },
    }
});
var list1 = new listing({
    template: '#users-template'
});

var list2 = new listing({
    template: '#users-template2'
});

Vue.component('list1', list1);
Vue.component('list2', list2)

var app = new Vue({
   el: ".lists-wrappers",
});
  

запрос — строка термина для поиска

Список вычислений — массив отфильтрованных данных по поисковому запросу.

Но получаю ошибку для «query» и «ComputedList».

[Предупреждение Vue]: свойство или метод «запрос» не определены в экземпляре, но на них ссылаются во время визуализации. Обязательно укажите реактивные свойства данных в параметре data. (найден в корневом экземпляре).

Ответ №1:

Вы были действительно близки к тому, что у вас было. Причина query ошибки в том, что вы использовали query то, что для Vue выглядело как область корневых экземпляров. Вы не должны помещать шаблоны внутри других шаблонов. Всегда имейте их вне него (желательно в виде строки в определении вашего компонента).

Вы можете прочитать об этом немного здесь: https://vuejs.org/guide/components.html#DOM-Template-Parsing-Caveats

Вот как я бы подошел к вашей ситуации: https://jsfiddle.net/crswll/apokjqxx/6 /

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

1. Спасибо! Это то, что мне нужно.