【问题标题】:Vue.js Passing data to content scopeVue.js 将数据传递到内容范围
【发布时间】:2015-08-28 04:42:37
【问题描述】:

我正在尝试将数据传递到插入(转入)模板中。

在 Angular 中,这将通过修改传递给 transcludeFn 的范围来完成,但我无法弄清楚如何在 Vue 中执行此操作,因为它简化了事情(我喜欢它)并在内部处理了嵌入。

我尝试在<content> 上使用v-with 指令,但它似乎不起作用。

简化的组件源码

<template>

    <div>
        <ul>
            <li v-repeat="tab: tabs">
                <content></content>
            </li>
        </ul>
    </div>

</template>

<script>
module.exports = {

    data: function () {
        return {

            tabs: [{ name: 'First' }, { name: 'Second' }]

        };
    }

};
</script>

用法

<div v-component="my-component">
    <pre>{{ $data | json }}</pre>
</div>
预期产出
<div>
    <ul>
        <li>
            <pre>{ "name": "First" }</pre>
            <pre>{ "name": "Second" }</pre>
        </li>
    </ul>
</div>
实际输出
<div>
    <ul>
        <li>
            <pre>{"tabs": [{ "name": "First" }, { "name": "Second" }]}</pre>
            <pre>{"tabs": [{ "name": "First" }, { "name": "Second" }]}</pre>
        </li>
    </ul>
</div>

【问题讨论】:

    标签: javascript vue.js


    【解决方案1】:

    这不起作用,因为嵌入的内容在父范围内编译。

    另外,您现在使用的是 v0.11.x 版本的 Vue。尝试使用 v0.12。

    您可以通过这种方式将数据传递给组件:

    new Vue({
      el: "#app",
      data: {
        tabs: [{ name: 'First' }, { name: 'Second' }]
      },
      components: {
        'my-comp': {
          template: "#mycomp",
          props: ['tabs'],
        }
      }
    })
    <template id="mycomp">
        <div>
            <ul>
                <li v-repeat="tab: tabs">
                    <pre>{{tab | json }}</pre>
                </li>
            </ul>
        </div>
    </template>
    
    <div id="app">
       <my-comp tabs="{{tabs}}" />  
    </div>
    <script src="https://rawgit.com/yyx990803/vue/dev/dist/vue.js"></script>

    【讨论】:

    • 嘿@oevgeny,感谢您的回答!不幸的是,这对我不起作用,因为我想在具有不同模板的多个地方重用这个组件。只有组件“包装”标记是相同的,模板必须由最终用户提供。基本上:我有很多标签需要的引导标记。我只想让用户提供一些数据数组,让他声明“卡片”模板和“卡片主体”模板,我将通过将数据提供给这些模板来使用它。
    猜你喜欢
    • 2020-03-29
    • 2018-10-22
    • 1970-01-01
    • 2020-05-31
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    相关资源
    最近更新 更多