Sou um iniciante em Vue.js e estou tentando criar um aplicativo que atenda às minhas tarefas diárias e encontrei o Vue Components. Abaixo está o que eu tentei, mas infelizmente, me deu este erro:
vue.js: 1023 [Aviso Vue]: Elemento personalizado desconhecido: - você registrou o componente corretamente? Para componentes recursivos, certifique-se de fornecer a opção "nome".
Alguma ideia, ajuda, por favor?
new Vue({
el : '#app',
data : {
tasks : [
{ name : "task 1", completed : false},
{ name : "task 2", completed : false},
{ name : "task 3", completed : true}
]
},
methods : {
},
computed : {
},
ready : function(){
}
});
Vue.component('my-task',{
template : '#task-template',
data : function(){
return this.tasks
},
props : ['task']
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.js"></script>
<div id="app">
<div v-for="task in tasks">
<my-task :task="task"></my-task>
</div>
</div>
<template id="task-template">
<h1>My tasks</h1>
<div class="">{{ task.name }}</div>
</template>
fonte
ES6
, como entãocomponents: {myTask},
Ou se for algum componente pequeno, você pode criá-lo dentro dacomponents
propriedade. Mas não parece um bom caminho, por causa da escala do aplicativo.data: function() { return { property1: 1, property2: 2 } }
Apenas defina
Vue.component()
antesnew vue()
.Vue.component('my-task',{ ....... }); new Vue({ ....... });
atualizar
<anyTag>
para<anytag>
<myTag>
usar<my-tag>
Problema do Github: https://github.com/vuejs/vue/issues/2308
fonte
new Vue({})
).Isso resolveu para mim: eu forneci um terceiro argumento sendo um objeto.
in
app.js
(trabalhando com laravel e webpack):Vue.component('news-item', require('./components/NewsItem.vue'), { name: 'news-item' });
fonte
Não abuse
Vue.component()
, ele registra componentes globalmente. Você pode criar o arquivo, nomeá-lo como MyTask.vue, exportar para lá o objeto Vue https://vuejs.org/v2/guide/single-file-components.html e depois importar em seu arquivo principal, e não se esqueça de registrá-lo :new Vue({ ... components: { myTask } ... })
fonte
Certifique-se de ter adicionado o componente aos componentes.
Por exemplo:
export default { data() { return {} }, components: { 'lead-status-modal': LeadStatusModal, }, }
fonte
Esta é uma boa maneira de criar um componente in vue.
let template = `<ul> <li>Your data here</li> </ul>`; Vue.component('my-task', { template: template, data() { }, props: { task: { type: String } }, methods: { }, computed: { }, ready() { } }); new Vue({ el : '#app' });
fonte
Eu estava acompanhando a documentação do Vue em https://vuejs.org/v2/guide/index.html quando me deparei com esse problema.
Mais tarde, eles esclarecem a sintaxe:
( https://vuejs.org/v2/guide/components.html#Organizing-Components )
Então, como Umesh Kadam disse acima, apenas certifique-se de que a definição do componente global venha antes da
var app = new Vue({})
instanciação.fonte
Eu tive o mesmo erro
entretanto, esqueci totalmente de começar
npm install && npm run dev
a compilar os arquivos js.talvez isso ajude novatos como eu.
fonte
OK, esse erro pode parecer óbvio, mas um dia eu estava procurando uma resposta APENAS PARA SABER QUE EU TINHA 2 vezes declarados COMPONENTES . estava me deixando louco, já que o VueJS não reclama quando você declara 2 vezes, óbvio que eu tinha muito código no meio, e quando adicionei um novo componente, coloquei a declaração no topo, embora também tivesse um perto do fundo. Então, da próxima vez que procurar isso primeiro, economizará muito tempo
fonte