如何在Vue-grid-layout中将带有内容的组件传递给GridItem?

时间:2017-02-21 23:16:33

标签: vue.js grid-layout vuejs2 vue-component

请帮助理解如何从Layout []的哈希值向GridItems传递内容。

我认为GridItem.i是GridItem的关键值。但是如何链接"内容"相应的单元组件?

这种方式不起作用:

HTML:

<grid-item v-for="item in layout"
               :x="item.x"
               :y="item.y"
               :w="item.w"
               :h="item.h"
               :i="item.i">
             {{item.c}}
</grid-item>

JS:

let a = `<item>There I want div from component</item>`;

Vue.component('item', {
    props: [],
    template: `<div>Primer</div>
    `
});

var testLayout = [
   {"x":0,"y":0,"w":2,"h":2,"i":"1","c":"content1"},
   {"x":2,"y":0,"w":2,"h":4,"i":"2","c":"<item>There I want div from component</item>"},    
   {"x":4,"y":0,"w":2,"h":5,"i":"3","c":a},
];

var GridLayout = VueGridLayout.GridLayout;
var GridItem = VueGridLayout.GridItem;

new Vue({
    el: '#app',
    components: {
        GridLayout,
        GridItem,
    },
    data: {
        layout: testLayout,
    },
});

https://jsfiddle.net/L2oh62tp/3/

3 个答案:

答案 0 :(得分:5)

免责声明:我是vue-grid-layout作者。

网格项使用插槽添加内容,因此我不认为v-html在网格项上使用时可以正常工作。就这样做:

<grid-item v-for="item in layout"
               :x="item.x"
               :y="item.y"
               :w="item.w"
               :h="item.h"
               :i="item.i">
             <div v-html="item.c"></div>
</grid-item>

小提琴:https://jsfiddle.net/gmsa/jw2mmmpq/1/

答案 1 :(得分:0)

看起来你必须使用这样的东西:

<grid-item v-for="item in layout" v-html="item.c"></grid-item>

答案 2 :(得分:0)

努力弄清楚这一点,我取得了一些进展。但这不是一个完整的答案。 我面临的问题是item组件的内部子项被解析为字符串而不是html。

如果有人帮忙会有用。

这是小提琴。 https://jsfiddle.net/srinivasdamam/ev88z5qs/