Как заставить видеть функцию Vue.componenta?

Здравствуйте.

Vue
// Экземпляр создан в другом файле
Vue.component("bla-bla", function(){
  computed: {
    move: function() {
      return 'название другого компонента';
    }
  }
});


HTML
<component v-bind:is="move"></component>

И вот такую ошибку он выдает:
move is not defined

Как я понимаю, эта функция должна быть в главном экземпляре, но она у меня должна быть именно в компоненте, как мне заставить видеть ее?
  • Вопрос задан
  • 208 просмотров
Решения вопроса 1
@levchak0910
answer.correct ? press({correct: true}) : next()
v-bind:is должно быть:
the name of a registered component, or
a component’s options object

docs
-----
Vue.component("parent", {
    template:`
        <div>
            <menu-avtr @change-tab="onChangeTab"></menu-avtr> 
            <component :is="componentName"></component>
        </div>
    `,
    data: () => ({
        componentName: "form-inp",
    }),
    methods: {
        onChangeTab(name) {
            this.componentName = name; 
        },
    },
});
Vue.component("menu-avtr", {
    data: function() {
      return {
        punktsMenuAvtr: [ {text: 'Вход', tabs: "inp"}, {text: 'Регистрация', tabs: "reg"} ],
        currentTab: "inp"
      }
    },
    template: '<menu><li v-for="punkt in punktsMenuAvtr" @click="setTab(punkt.tabs)" v-bind:data-active=" currentTab === punkt.tabs ? true : false ">{{ punkt.text }}</li></menu>',
    methods: {
        setTab(tab) {
            this.currentTab = tab;
            this.$emit("change-tab", `form-${tab}`)
        },
    },
  });
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Вот в каком шаблоне компонента у вас вот это: <component v-bind:is="move"></component>
Туда и добавить функцию move и скобки не забыть поставить, чтобы ее вызов произошел: <component v-bind:is="move()"></component>
Ответ написан
@KNLNT Автор вопроса
Вот весь код

<component v-bind:is="movePunkts" class="formAvtr"></component>


Vue.component("menu-avtr", {
		data: function() {
			return {
				punktsMenuAvtr: [ {text: 'Вход', tabs: "inp"}, {text: 'Регистрация', tabs: "reg"} ],
				currentTab: "inp"
			}
		},
		template: '<menu><li v-for="punkt in punktsMenuAvtr" @click="currentTab = punkt.tabs" v-bind:data-active=" currentTab === punkt.tabs ? true : false ">{{ punkt.text }}</li></menu>',
		computed: {
			movePunkts: function(){
				return 'form-' + this.currentTab
			}
		}
	});
	Vue.component("form-inp", {
		template: '<form>Вход</form>'
	});
	Vue.component("form-reg", {
		template: '<form>Регистрация</form>'
	});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы