javascript - 注入(inject) html - 使用 slot 还是 v-html?

标签 javascript vue.js vuejs2

这是我的案例:

我正在通过以下方式创建模式:

<Modal id="modal">    
    <my-component></my-component>    
</Modal>

现在我希望模态中的内容是动态的,所以我可以输入 <input><table>或带。我尝试过使用插槽(它有效),但它并不是真正动态的。我想知道我是否错过了一些可以让老虎机变得更加动态的东西。

这是我的模式的设置方式:

<div 
    :id="id"
    class="main" 
    ref="main" 
    @click="close_modal"
>
    <div ref="content" class="content" :style="{minHeight: height, minWidth: width}">
        <div ref="title" class="title" v-if="title">
            {{ title }}
            <hr/>
        </div>
        <div ref="body" class="body">
            <slot></slot>
        </div>
    </div>
</div>

最佳答案

我认为使用插槽是一个不错的选择。随着 2.5 中引入 slot-scope,您基本上获得了反向属性功能,您可以在子组件中设置默认值并在父组件中访问它们。当然,它们的使用完全是可选的,您可以自由地将您喜欢的任何内容放入插槽中。

这是一个示例组件,允许您根据需要自定义页眉、正文和页脚:

// MyModal.vue
<template>
  <my-modal>
    <slot name="header" :text="headerText"></slot>
    <slot name="body" :text="bodyText"></slot>
    <slot name="footer" :text="footerText"></slot>
  </my-modal>
</template>

<script>
  export default {
    data() {
      return {
        headerText: "This is the header",
        bodyText: "This is the body.",
        footerText: "This is the Footer."
      }
    }
  }
</script>

// SomeComponent.vue
<template>
  <div>
    <my-modal>
      <h1 slot="header" slot-scope="headerSlotScope">
        <p>{{ headerSlotScope.text }}</p>
      </h1>
      <div slot="body" slot-scope="bodySlotScope">
        <p>{{ bodySlotScope.text }}</p>
        <!-- Add a form -->
        <form>
          ...
        </form>
        <!-- or a table -->
        <table>
          ...
        </table>
        <!-- or an image -->
        <img src="..." />
      </div>
      <div slot="footer" slot-scope="footerSlotScope">
        <p>{{ footerSlotScope.text }}</p>
        <button>Cancel</button>
        <button>OK</button>
      </div>
    </my-modal>
  </div>
</template>

<script>
import MyModal from './MyModal.vue';

export default {
  components: {
    MyModal
  }
}
</script>

关于javascript - 注入(inject) html - 使用 slot 还是 v-html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48739535/

相关文章:

asp.net-mvc - Vue.Js - 如何从 MVC View 模型将数据加载到 Vue 实例中?

javascript - 从普通文本中提取标题标签

javascript - 如何通过react-redux connect使用React.memo?

javascript - 聚合物 : paper-autocomplete set value

javascript - JQuery 3 和 Bootstrap 的自动完成

checkbox - 如何使用 Vuetify 选择多个复选框?

vue.js - 将 v-for 与 v-on 一起使用 :click in a Vue Component

javascript - 如何在嵌套循环中使用v-for?

vue.js - VueJS - 单击时交换组件

vue.js - Vuejs + Vuetify 自定义主题和图标不起作用