vuejs vue type props example data component javascript vue.js

javascript - type - vuejs



Vue+componentes anidados creados (3)

Desea representar <field> en <newform> , por lo que debe mostrar la plantilla de field en la plantilla newform . Me gusta esto

form.js

module.exports = { template: ''Ein Text feld<slot></slot>'', props: [''name'', ''type''], create: function() { console.log("Field Component created"); } }

Otro punto es requerir field.js en app.js no form.js

Aquí está el ejemplo http://www.webpackbin.com/4k9vxYrCl .

Espera ayudarte

Hola chicos, ¿hay alguna manera de crear componentes anidados en vue.js?

<newform> <field></field> <field></field> <field></field> <field></field> <submit></submit> </newform>

En mi caso, solo se representa el componente newform, pero no los componentes anidados.

Mi código:

app.js

Vue.http.headers.common[''X-CSRF-TOKEN''] = document.querySelector(''#token'').getAttribute(''value''); Vue.config.debug = true; Vue.config.async = true; /** * The base Vue Instance */ new Vue({ el: ''#app'', components: { ''new-form'': require(''./components/form'') } });

form.js

module.exports = { template: "Hallo Welt", props: [''url'', ''method''], components: { ''field'': require(''./field'') }, created: function() { console.log("Form Component created"); } }

field.js

module.exports = { template: ''Ein Text feld'', props: [''name'', ''type''], create: function() { console.log("Field Component created"); } }

Enlace a la muestra del código


La funcionalidad que está describiendo se llama ranura en Vue. Le permite anidar contenido dentro de un componente que está incluyendo usando una etiqueta especial <slot> en su plantilla. Aquí hay un ejemplo .

Al mirar ese enlace, es importante tener en cuenta que los componentes no están en la relación padre-hijo que intentas implicar. Su form no necesita especificar el field bajo sus componentes. Tiene una ranura y no le importa lo que aparecerá en ella.

Tanto la form como el field deben especificar bajo componentes en su app.js , ahí es donde se realiza todo el trabajo pesado y ahí es donde se incluyen ambos componentes.


Puede usar componentes como este: http://jsfiddle.net/hajkrupo/5/

<body> <encapsulated-component inline-template> <header> <cart-status></cart-status> </header> <cart></cart> <item some-prop="1"></item> <item some-prop="2"></item> <item some-prop="3"></item> </encapsulated-component> </body>