VueJS - имя динамической функции внутри методов

У меня есть список и навигация, которые создаются из 12 элементов на страницу в зависимости от количества строк данных.

Мои кнопки навигации запускают события vue-js v-on: click

Я также пытаюсь динамически сгенерировать методы функций в файле JS, но не могу вставить оператор цикла в разделе методов. Продолжайте получать синтаксические ошибки.

Есть ли особый синтаксис JS в разделе методов vueJS?

        methods: {

        for (x = 0; x < 2; x++){
            featuredStores.'x' = function(){
                 for (y = 0; y < 2; y++)
                this.storeFeatNav.'y' = !this.storeFeatNav.'y'
        }}

Я также использую фреймворк Laravel, если это помогает.

Спасибо

похоже this.storeFeatNav[x]

Sphinx 06.07.2018 18:33

@Sphinx - похоже, не сработало. Я увязаю даже в заявлении for

Podge Dimagiba 06.07.2018 18:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
2
2
1 936
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Очевидно, что вы хотите добавлять методы динамически, но неясно, что вы делаете в коде присоединения динамического метода. Итак, я собираюсь показать вам способ динамического добавления методов, например:

var methods = {
    greet() {
        console.info(this.message + ' from greet method.');
    }
};

for (let x = 0; x < 2; x++)  {
    methods['featuredStores'+x] = function() {
        console.info(this.message + ' from featuredStores'+x+' method.');
    }
}

Обратите внимание, что methods['featuredStores'+x] фактически создает имя метода, объединяя значение x со строкой featuredStores внутри цикла, поэтому в первый раз значением x будет 0, который производит featuredStores0, а второй раз значением x будет 1, поэтому он производит featuredStores0 и наконец, у вас есть три метода:

greet // hard coded
featuredStores0 // added dynamically within the loop
featuredStores1 // added dynamically within the loop

Теперь все, что вам нужно, добавить объект methods в качестве свойства нового экземпляра при создании экземпляра Vue, например:

var demo = new Vue({
    el: '#demo',
    methods: methods, // or just methods
    data:{
        message: "Hello World"
    }
});

Чтобы увидеть это в действии, запустите следующий фрагмент кода (надеюсь, это даст вам некоторое представление):

var methods = {
    greet() {
        console.info(this.message + ' from greet method.');
    }
};

for (let x = 0; x < 2; x++)	 {
    methods['featuredStores'+x] = function() {
        console.info(this.message + ' from featuredStores'+x+' method.');
    }
}

var demo = new Vue({
    el: '#demo',
    methods,
    data:{
        message: "Hello World"
    },
    created() {
    	this.greet();
        this.featuredStores0();
	this.featuredStores1();
    }
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/vue/0.8.6/vue.min.js"></script>
<div id = "demo">
    {{message}}
</div>

Привет @The Alpha, спасибо, что нашли время и поняли мой вопрос. Это решение именно то, что я ищу. Лучше всего то, что я научился лучше задавать свои вопросы на этом форуме

Podge Dimagiba 07.07.2018 14:47

Добро пожаловать! Рад это знать :-)

The Alpha 07.07.2018 14:48

Другие вопросы по теме