Vue.js unknown custom element
You forgot about the components
section in your Vue initialization
. So Vue actually doesn't know about your component.
Change it to:
var myTask = Vue.component('my-task', {
template: '#task-template',
data: function() {
return this.tasks; //Notice: in components data should return an object. For example "return { someProp: 1 }"
},
props: ['task']
});
new Vue({
el: '#app',
data: {
tasks: [{
name: "task 1",
completed: false
},
{
name: "task 2",
completed: false
},
{
name: "task 3",
completed: true
}
]
},
components: {
myTask: myTask
},
methods: {
},
computed: {
},
ready: function() {
}
});
And here is jsBin, where all seems to works correctly: http://jsbin.com/lahawepube/edit?html,js,output
UPDATE
Sometimes you want your components to be globally visible to other components.
In this case you need to register your components in this way, before your Vue initialization
or export
(in case if you want to register component from the other component)
Vue.component('exampleComponent', require('./components/ExampleComponent.vue')); //component name should be in camel-case
After you can add your component inside your vue el
:
<example-component></example-component>
Just define Vue.component()
before new vue()
.
Vue.component('my-task',{
.......
});
new Vue({
.......
});
update
- HTML converts
<anyTag>
to<anytag>
- So don't use captital letters for component's name
- Instead of
<myTag>
use<my-tag>
Github issue : https://github.com/vuejs/vue/issues/2308